Dziękuję serdecznie za odpowiedź. Okazała się bardzo pomocna. Umiem już rysować punkty na tej bitmapie i funkcje też:-)
Mam jednak problem z tym stworzeniem na tej bitmapie obiektu graphics. Wywala mi taki błąd:
System.NullReferenceException: Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu.
w System.Drawing.Pen.set_Color(Color value)
w Rysowanie.Form1.button1_Click(Object sender, EventArgs e) w c:\users\arrowman\documents\visual studio 2008\projects\rysowanie\rysowanie\form1.h:wiersz 151
w System.Windows.Forms.Control.OnClick(EventArgs e)
w System.Windows.Forms.Button.OnClick(EventArgs e)
(...)
Kod buttona(rysuj - jest, to pictureBox, ta - textbox, jest parametrem 'a' funkcji y = a*x^2):
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
int i,y,y2,x,j;
double a;
// Tworzę obiekt Bitman z pliku
Bitmap^ myBitmap = gcnew Bitmap( "Grapes.bmp" );
Graphics ^ g;
// Ustaiwam(?) obiekt na myBitmap
g->FromImage(myBitmap);
// Tworzę pędzel
Pen ^P;
// Kolor pędzla
P->Color = Color::Black;
// Wielkość pędzla
P->Width = 2;
// Pobieram kolor piksela z myBitmap
Color pixelColor = myBitmap->GetPixel( 50, 50 );
// tworzę konwerter
//System::ComponentModel::TypeConverter^ converter = System::ComponentModel::TypeDescriptor::GetConverter( pixelColor );
// Pobieram kolor z RGB
pixelColor = Color::FromArgb(255,255,255);
// Nadaję kolor pikselowi
myBitmap->SetPixel(10,40,pixelColor);
if (ta->Text=="") ta->Text = "1";
a = Convert::ToDouble(ta->Text);
for(i = 0; i < 300; i++) {
x = i;
y = Convert::ToInt32(a*(x*x));
y2 = Convert::ToInt32(a*((x-1)*(x-1)));
if ( ( (y-y2)>1 )&&( y2<=299 ) )
for(j = 1; j < (y-y2); j++) {
if ( (y2+j)>299 ) break;
myBitmap->SetPixel(x,299-(y2+j),pixelColor);
}
if (y > 299) {
y = 299;
} else {
myBitmap->SetPixel(x,299-y,pixelColor);
}
}
myBitmap->Save("g.bmp");
g->DrawRectangle(P,0,0,10,10); // TUTAJ BŁĄD!!!
//l1->Text = Convert::ToString(converter->ConvertToString( pixelColor ));
rysuj->Load( "g.bmp" );
}
};