ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
333
333
EMPFEHLEN
-
Hallo, habe ein ungewöhnliches Problem habe mit Hilfe von System.Drawing.Graphics eine linie gezeichnet klappt auch alles nur dauert es zeimlich lange bis die linie gezeichnet wird aber wenn ich den cursor auf ein anderes steuerelement lege bzw berühre kommt die linie sofort. Was kann das sein?
Dazu muss ich sagen ich verwende ein panel als roten punkt und bewege ihn mit einem for anweisungsblock + array und verämndere so seine position durch einen click und später zeichnet er die linie das klappt auch aber wie gesagt es dauert viel zu lang.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) { //Städte //Graphics erzeugen System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Red); System.Drawing.Graphics formGraphics; //auf objekt *Picturebox* formGraphics = pictureBox1.CreateGraphics(); int x = panel1.Location.X; int y = panel1.Location.Y; Point germany = new Point(x,y); Point newyork = new Point(244,213); //linie zeichnen formGraphics.DrawLine(myPen, germany, newyork); //Resourcen wieder freigeben myPen.Dispose(); formGraphics.Dispose(); }
Mein zweites Problem ist wenn ich mit dem Cursor die Coordinaten an clicke auf der form um den Panel zu coordinieren dann kommt er nie genau darauf an wo ich hingelickt habe sondern immer etwas weiter weg.Geändert von Topia (09.10.08 um 00:45 Uhr)
-
Wie löst man das Problem?
-
Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
Hallo Topia,
Ich vermute mal,das Zeichnen der Linien dauert nicht lange, sondern es hat Dir die Linien erst angezeigt, als die Dialogoberfläche neu gezeichnet wurde.
Da du ja in einer Picturebox zeichnest, nimm mal das Paint-Ereignis der Picurebox:
Ist es das was du suchst?PHP-Code:private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
if (e.Graphics != null)
Zeichne(e.Graphics);
}
void Zeichne(Graphics gr)
{
System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Red);
int x = 10;
int y = 10;
Point germany = new Point(x, y);
Point newyork = new Point(244, 213);
//linie zeichnen
gr.DrawLine(myPen, germany, newyork);
//Resourcen wieder freigeben
myPen.Dispose();
}
Gruß Col.BlakeÜber so viele Sachen wächst Gras , man kann keiner Wiese mehr trauen.
-
mich wunderts eher das er die Linie überhaupt angezeigt hat.

das Problem besteht nämlich hier
Da solltest du wie colblake schon sagte das Paint Ereignisse der Picturebox verwenden und das hauseigene Graphics Objekt aus PaintEventArgsCode :1
formGraphics = pictureBox1.CreateGraphics();
das zweite Problem lag hier
vor dem Disposen des Graphics Objekt hättest du Flush aufrufen müssen dann sollte er auch sofort alles anzeigen.Code :1
formGraphics.Dispose();
mit Flush wird sozusagen gesagt das er alle Grafikoperationen ausführen soll.
Ähnliche Themen
-
Vorschaurender dauert viel zu lange!
Von tomengel im Forum Cinema 4DAntworten: 5Letzter Beitrag: 22.04.07, 20:32 -
SELECT dauert zu lange
Von Deletemaster im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 13.02.07, 21:02 -
Sleep dauert zu lange
Von TimSz im Forum C/C++Antworten: 4Letzter Beitrag: 19.05.06, 20:52 -
Datenbankausgabe dauert zu lange
Von soa im Forum PHPAntworten: 3Letzter Beitrag: 21.09.05, 18:07 -
VRAY dauert zu lange
Von Visu1 im Forum 3D Studio MaxAntworten: 5Letzter Beitrag: 19.07.04, 14:35





Zitieren



Login





