Witam!
Mam obiekt graphics o rozmiarze 100x100 po ktorym sobie maluje myszka.
Potrzebuje funkcji, ktora zwroci mi tablice boolowska o rozmiarze 100x100, gdzie dane pole w tablice bedzie odpowiadalo danemu pikselowi w graphics, na zasadzie ze jesli dany piksel jest zamalowany to ma tam byc true, a jak niezamalowany to false.
Ma ktos jakis pomysl?
Moszesz poczytac o klasie Bitmap i jej metodzie GetPixel
Ale w czym problem? Najprostsze rozwiązanie (ale powolne) to podwójny for z GetPixel() i jedziemy..
private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.Image = new Bitmap(100,100);
var g = Graphics.FromImage(pictureBox1.Image);
g.Clear(Color.White);
g.DrawLine(Pens.Black, 5, 5, 50, 50);
g.Dispose();
bool[,] tablica = new bool[100, 100];
Bitmap bmp=(Bitmap)pictureBox1.Image;
for(int i=0;i<100;i++)
for(int j=0;j<100;j++)
tablica[i,j]=bmp.GetPixel(i,j)!=Color.White;
}
Jeśli jednak prędkość ma znaczenie, to zamiast GetPixel trzeba zrobić na wskaźnikach.
dokladnie o cos takiego jak getPixel mi chodzilo! pierwsze kroki stawiam w .NET (z javy sie przesiadam) dlatego mam jeszcze male problemy z ogarnieciem takich prostych rzeczy :P dzieki wielkie w kazdym razie!!
Taka drobnostka - nie jestem w 100% pewien czy dotyczyto też tablic, ale rozmiar jednego boola wynosi... 2 bajty. :|
Tak czy inaczej do przetwarzania tablic bitów najlepsza jest specjalna klasa, bitarray bodajże
@down: no może i... [wstyd]
MSM napisał(a)
Taka drobnostka - nie jestem w 100% pewien czy dotyczyto też tablic, ale rozmiar jednego boola wynosi... 2 bajty. :|
1 bajt.