====== Grundlegende Funktionen ======
===== gObject auf einem Panel =====
==== Erstellen eines Zeichenobjekts ====
* Hinzufügen z.B. eines Panels mit dem Namen canvas
* Graphics-Objekt gObject erstellen und mittels ''gObject= canvas.CreateGraphics();'' dem Panel zuweisen.
namespace _Graphics
{
public partial class Form1 : Form
{
Graphics gObject;
Pen pen;
Brush brush;
public Form1()
{
InitializeComponent();
gObject = canvas.CreateGraphics();
}
}
==== Zeichnen verschiedener Elemente ====
private void button1_Click(object sender, EventArgs e)
{
//Pen und Brush definieren
pen = new Pen(Color.Red, 2);
brush = new SolidBrush(Color.Blue);
//Linie
gObject.DrawLine(pen, 10, 10, 50, 20);
//Rechteck
gObject.DrawRectangle(pen, 10, 25, 150, 20);
Rectangle rechteck = new Rectangle(10, 50, 100, 30);
gObject.DrawRectangle(pen, rechteck);
gObject.FillRectangle(brush, 10, 100, 200, 40);
//Ellipse
gObject.FillEllipse(brush, 10, 160, 50, 50);
//Punkte und Polygon
Point[] punkte = new Point[3];
punkte[0] = new Point(10, 250);
punkte[1] = new Point(150, 250);
punkte[2] = new Point(100, 300);
gObject.DrawPolygon(pen, punkte);
}
private void button2_Click(object sender, EventArgs e)
{
//Löschen der gezeichneten Objekte
gObject.Clear(Color.White);
}
{{:inf:csharp:grafikelemente-gobject.jpg|}}
===== gObject mittels PictureBox =====
Das Verwenden des Graphics-Objekts mittels PictureBox hat den Vorteil, dass man die Grafik in ein Bitmap speichern sowie Farben von Pixeln auslesen kann:
public partial class Form1 : Form
{
//Image für Bitmap
Image img;
//Graphics für die PictureBox
Graphics gObject;
//Brush und Pen
SolidBrush brush = new SolidBrush(Color.White);
Pen pen = new Pen(Color.Black);
public Form1()
{
InitializeComponent();
//neues Bitmap erstellen
img = new Bitmap(pictureBox1.Width, pictureBox1.Height);
//Bitmap der PictureBox zuweisen
pictureBox1.Image = img;
//Graphics-Objekt erstellen
gObject = Graphics.FromImage(pictureBox1.Image);
gObject.FillRectangle(brush,0, 0, pictureBox1.Width, pictureBox1.Height);
}
private void button1_Click(object sender, EventArgs e)
{
gObject.FillEllipse(brush, x, y, 20, 20);
//Refresh ist nötig, damit das gezeichnete Objekt erscheint.
pictureBox1.Refresh();
}
//Auslesen von Farben, wenn sich die Maus über die PictureBox bewegt
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
Bitmap bmp = (Bitmap)pictureBox1.Image;
// Bitmap bmp = (Bitmap)img; //ebenfalls möglich
farbe = bmp.GetPixel(e.X, e.Y);
// farbe=((Bitmap)img).GetPixel(e.X, e.Y); //ebenfalls möglich
pictureBox2.BackColor = farbe;
label1.Text = farbe.ToString();
}