Wewnątrz pętli rysowane są losowe piksele koloru białego. Obydwa wyświetlane są w 2 komponentach typu PictureBox1.
Tworzony jest jeszcze jeden obraz (b3), który jest maską, też jest cały czarny, a potem rysowany jest pewien tekst (DrawString) w kolorze niebieskim. Obrazek jest ponownie przepisywany do obiektu b3.
Ostatecznie pobieramy x i y wszystkich punktów tego obrazka w tym kolorze, czyli moglibyśmy stworzyć coś na kształt tablicy ze współrzędnymi narysowanego Stringa.
W mojej pętli na przemian dane punkty są rysowane raz na jednym obrazku, raz na drugim, uzupełniając braki kolorem przezroczystym (transparent). Efektem nałożenia dwóch picture box na siebie powinno być odtworzenie napisu narysowanego na obiekcie b3 za pomocą funkcji DrawString. Problem jest chyba z przezroczystością koloru, ale nie wiem dlaczego.
Pętla którą stworzyłem powinna wypełnić wszystkie piksele kolorem na przemian raz dla jednego raz dla drugiego obrazka, a żeby uzyskać efekt nakładania obrazek nadrzędny ma resztę pikseli wypełnionych kolorem przezroczystym.
Sam komponent pictureBox też ma tło ustawione na przezroczyste.
Więc, co robię nie tak ?
System::Drawing::Bitmap ^ b2 = gcnew System::Drawing::Bitmap(300, 100, System::Drawing::Imaging::PixelFormat::Format24bppRgb);
for (int x = 0; x < 300; x++)
{
for (int y = 0; y < 100; y++)
{
b2->SetPixel(rand->Next(300), rand->Next(100), System::Drawing::Color::White);
b->SetPixel(rand->Next(300),rand->Next(100), System::Drawing::Color::White);
}
}
System::Drawing::Bitmap ^ b3 = gcnew System::Drawing::Bitmap(300, 100, System::Drawing::Imaging::PixelFormat::Format24bppRgb);
System::Drawing::Image ^ ix = (System::Drawing::Image^)b3;
System::Drawing::Graphics ^ g = System::Drawing::Graphics::FromImage(ix);
g->DrawString("Something", gcnew System::Drawing::Font("Tahoma", 40,System::Drawing::FontStyle::Bold), Brushes::Blue, 20, 20);
g->DrawImage(ix, System::Drawing::PointF(0, 0));
b3 = (System::Drawing::Bitmap^)ix;
for (int x = 0; x < 300; x++)
{
for (int y = 0; y < 100; y++)
{
if (b3->GetPixel(x, y).B > 0)
{
if (xx == 0 )
{
b->SetPixel(x,y,System::Drawing::Color::Black);
}
else
{
b->SetPixel(x,y, System::Drawing::Color::Transparent);
b2->SetPixel(x,y,System::Drawing::Color::Black);
}
xx++;
if (xx == 2) xx = 0;
};
};
};
pictureBox1->Image = (System::Drawing::Image^)b;
pictureBox2->Image = (System::Drawing::Image^)b2;
pictureBox1->Location = pictureBox2->Location;

