| 
| Autor | Beitrag |  
| Jakob_Ullmann 
          Beiträge: 1747
 Erhaltene Danke: 15
 
 Win 7, *Ubuntu GNU/Linux*
 *Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
 
 | 
Verfasst: So 20.09.09 12:35 
 
Hallo!
 Ich habe jetzt mal wieder Visual C# installiert und habe versucht, ein bisschen zu malen. Versuch: Gradienz. Als Anfänger durchblicke ich noch nicht so ganz die Zusammenhänhe von pictureBox.Image, Graphics und Bitmap. Ich habe es erst einmal mit Rechtecken probiert, was natürlich langsam ist:
 		                       C#-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 
 |         private void button1_Click(object sender, EventArgs e){
 Graphics MyGraph = Graphics.FromHwnd(pictureBox1.Handle);
 
 for (int i = 1; i <= 80; i++)
 {
 for (int j = 1; j <= 80; j++)
 {
 MyGraph.DrawRectangle(new Pen(Color.FromArgb(255, 2 * i + j, 0, 255)),
 new Rectangle(i, j, 1, 1));
 
 }
 }
 }
 |  Scheinbar gibt es dafür nur Bitmap.SetPixel. Allerdings würde mich jetzt mal interessieren, wie ich auf einem Bitmap zeichne und wie ich es dann in eine pictureBox übertrage, bzw. wozu ich dann eigentlich Graphics brauche.
 Leider weiß ich noch nicht, was so die hilfreichen Seiten für C# sind, habe die Online-Hilfe (MSDN) und das Open Book Visual C# 2008, Galileo Computing durchsucht und hab nichts brauchbares gefunden. |  |  |  
| gfoidl 
          Beiträge: 157
 Erhaltene Danke: 19
 
 Win XP
 C#, Fortran 95 - Visual Studio
 
 | 
Verfasst: So 20.09.09 13:15 
 
Hallo,
 die Zeichenlogik in .net kehrt sich um. Windows bestimmt was wann gezeichnet werden soll.
 Eine sehr gute Einführung bietet: Zeichnen in Windows-Programmen (Paint/OnPaint, PictureBox) Für Gradienz gibt speziell den GradientBrush. Aber lies der erstmals den obigen Link durch.
 mfG Günther_________________ Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!
 |  |  |  
| Jakob_Ullmann  
          Beiträge: 1747
 Erhaltene Danke: 15
 
 Win 7, *Ubuntu GNU/Linux*
 *Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
 
 | 
Verfasst: So 20.09.09 13:30 
 
Dort verstehe ich nicht sehr viel. Was ist denn bitte das _listgo, was der Autor verwendet?
 EDIT: Also ich verstehe schon, was der Autor mit _listgo machen will. Aber was muss ich vorher machen, wie muss ich _listgo deklarieren?
 |  |  |  
| Kha 
          Beiträge: 3803
 Erhaltene Danke: 176
 
 Arch Linux
 Python, C, C++ (vim)
 
 | 
Verfasst: So 20.09.09 14:07 
 
Wenn du nicht per Graphics direkt auf die Form zeichnen, sondern ein Bitmap im Hintergrund halten willst (was du eben für pixelweisen Zugriff brauchst), kannst du dir OnPaint sparen:
 	  | herbivore hat folgendes geschrieben: |  	  | Wenn man PictureBoxen verwendet (und nur dann  , kann man im Prinzip alles vergessen, was ich bisher gesagt habe. | 
 Also:
 Bitmap erzeugen
Manipulieren: Für halbwegs schnellen Zugriff Get/SetPixel, für sauschnellen LockBits, für komplexere Formen Graphics.FromImage
PictureBox.Image zuweisen
_________________ >λ=
 |  |  |  
| Jakob_Ullmann  
          Beiträge: 1747
 Erhaltene Danke: 15
 
 Win 7, *Ubuntu GNU/Linux*
 *Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
 
 | 
Verfasst: So 20.09.09 14:24 
 
Hey cool, das funktioniert.
 		                       C#-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 
 |         private void button1_Click(object sender, EventArgs e){
 Bitmap myBmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
 for (int i = 1; i <= 50; i++)
 {
 for (int j = 1; j <= 50; j++)
 {
 myBmp.SetPixel(i, j, Color.FromArgb(255, 4 * i,
 4 * j, 255));
 }
 }
 pictureBox1.Image = myBmp;
 }
 |  Vielen Dank für die Hilfe! |  |  |  
| Th69 
          
  Beiträge: 4800
 Erhaltene Danke: 1059
 
 Win10
 C#, C++ (VS 2017/19/22)
 
 | 
Verfasst: So 20.09.09 15:38 
 
GetPixel und SetPixel sind relativ langsame Operationen, besonders in Schleifen.
 Als Alternative gibt es andere Möglichkeiten, z.B. www.mycsharp.de/wbb2...d.php?threadid=29667 oder
www.mycsharp.de/wbb2...d.php?threadid=59354 |  |  |  |