Oto mały przykład, który wyjaśnić kilka rzeczy dla mnie (miałem problemy z tym nieco zbyt).
pBox jest PictureBox na Form1, sprawiają, że co najmniej 50x50
AppPath pochodzi od System.Reflection jednak użyć dowolnego ścieżkę chcesz
Istnieją dwa przyciski, jeden do rysowania, jeden do zapisywania, ich kliknięcia znajdują się w kodzie poniżej.
Czego nauczyłem:
(1) „pBox.Image =” nic nie robi, ale zainicjować obraz pBox, to nie musi być nazwa pliku jak każdy przykład znalazłem używany (oszczędność miał problemu do tego samego pliku, ponieważ był zablokowany udział). Ponadto, jeśli Twoim celem jest widzieć rzeczy na całej powierzchni kontrolnej, prawdopodobnie będziesz chciał ustawić rozmiar w czasie inicjalizacji do potrzebnego rozmiaru. Użyłem rozmiaru pBox w tym przykładzie, ale zwykle używam rozmiaru bitmapy (ponieważ zwykle zaczynam od prawdziwego pliku obrazu).
(2) Zawsze miałem problemy, albo widząc, że moje losowania pojawiły się na kontrolce, albo widząc moje zmiany zapisane w pliku wyjściowym (lub obu). W moich wcześniejszych próbach duplikowałem remisy zarówno na kontrolce, jak i na bitmapie. Oczywiście nie jest to konieczne, ale edytowana bitmapa DOES musi zostać ponownie wczytana do pliku control.image ... i KTÓRA była kawałkiem tej układanki, której mi brakowało.
(A) Tworzenie bitmapy z control.image i narysować na bitmapę
(B) Załaduj bitmapę do control.Image (dzięki czemu można zobaczyć zmiany powodowane przez losowanie)
(C) Zapisz control.Image
(2 opcja) masz globalną (lub przekazany) bitmapy (prawdopodobnie z prawdziwego pliku)
(a) Narysuj na bitmapę
(B) Załaduj bitmapę do control.Image (dzięki czemu można zobaczyć zmiany)
(C) Zapisz bitmapę
public Form1()
{
InitializeComponent();
pBox.Image = new Bitmap(pBox.Width, pBox.Height);
}
private void DrawStuff1_Click(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(pBox.Image);
Graphics g = Graphics.FromImage(bmp);
g.FillRectangle(Brushes.Red, 5, 5, 25, 25); //hard-coded size to reduce clutter
pBox.Image = bmp; //this makes your changes visible
}
private void Save_Click(object sender, EventArgs e)
{
pBox.Image.Save(appPath + "SavedImage.bmp");
}
Hi można wyjaśnić/podać przykład? – tguclu