![]() |
Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
Hallo Leute
Hab ein echtes Problem und bin auf Eure geschätzte Hilfe angewiesen... Habe ein Programm geschrieben, welches nun jahrelang unter XP fehlerfrei im Einsatz war. Beim Umstellen auf Win 7 habe ich nun festgestellt, dass mit folgendem Code keine Linien mehr auf das Image gezeichnet werden...
Delphi-Quellcode:
Der Canvas bleibt einfach leer, d.h. nur der weisser Hintergrund ist sichtbar.
/ Umriss Zeichnen
Clear_Temp_Screen; Image1.Canvas.Brush.Style := bsClear; Image1.Canvas.MoveTo(50,10); Image1.Canvas.LineTo(50,266); Image1.Canvas.LineTo(770,266); // Daten an rechten Rand schreiben Image1.Canvas.Pen.Color := clBlack; Image1.Canvas.MoveTo(790,10); Image1.Canvas.LineTo(790,266); Image1.Canvas.LineTo(930,266); Image1.Canvas.LineTo(930,10); Image1.Canvas.LineTo(790,10); Image1.Canvas.Pen.Color := clBlack; Image1.Canvas.Font.Name:='Arial'; Image1.Canvas.Font.Style:=[fsBold]; Image1.Canvas.Font.Height:=18; Image1.Canvas.TextOut(798,20,SDatum2+FormatDateTime('dd.mm.yyyy',Tmp_Datum)); Image1.Canvas.Font.Style:=[]; Image1.Canvas.Font.Height:=14; Image1.Canvas.TextOut(798,60,SKundenNummer2+IntToStr(Header_Kunden_Nummer)); Image1.Canvas.TextOut(798,80,SGerTeNummer2+IntToStr(Header_Geraete_Nummer)); Image1.Canvas.TextOut(798,100,SSollwert+IntToStr(SpinEdit1.Value)); Image1.Canvas.Font.Name:='Arial'; Image1.Canvas.Font.Style:=[fsBold]; Image1.Canvas.Font.Height:=14; Image1.Canvas.TextOut(50,315,SKOMMENTAR); Image1.Canvas.TextOut(50,350,SEREIGNISDATEN1); Image1.Canvas.Font.Style:=[]; usw.... Danke für Eure Hilfe... |
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
Zeichnet wunderbar:
Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
begin Image1.Canvas.Brush.Style := bsClear; Image1.Canvas.MoveTo(50,10); Image1.Canvas.LineTo(50,266); Image1.Canvas.LineTo(770,266); // Daten an rechten Rand schreiben Image1.Canvas.Pen.Color := clBlack; Image1.Canvas.MoveTo(790,10); Image1.Canvas.LineTo(790,266); Image1.Canvas.LineTo(930,266); Image1.Canvas.LineTo(930,10); Image1.Canvas.LineTo(790,10); Image1.Canvas.Pen.Color := clBlack; Image1.Canvas.Font.Style:=[]; end; |
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
Was für ein Bild (BMP/FPG/PNG/...) steckt denn in dem Image? (falls ein Bild geladen wurde)
[edit] Zitat:
[/edit] Wenn es ein Bitmap ist oder wenn nichts geladen wurde, dann versuch es mal über Image1.Bitmap.Canvas (oder war's Image1.Picture.Bitmap.Canvas :gruebel: ) . Was macht Clear_Temp_Screen? Und wird eventuell irgendwo die Größe von Image1 verändert? (manuell oder über Align, Anchors, ...) |
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für den Feedback
Es wird kein Bild in das "Image" geladen, sondern nur auf die Fläche gezeichnet. Hier die Procedure Clear_Temp_Screen. Da wird über die gesamte Fläche ein gefülltes weisses Rechteck gezeichnet.
Delphi-Quellcode:
Im Anhang findet Ihr noch einen Printscreen des Objektinspektors...
procedure TTemperaturdaten.Clear_Temp_Screen;
begin Image1.Canvas.Brush.Color := clWhite; Image1.Canvas.FillRect(Rect(0,0,938,550)); //Image1.Canvas.FillRect(Rect(0,0,930,266)); end; |
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
Und in welchem Ereignis wird gezeichnet oder wann wird das Zeichnen ausgelöst? Und mit dem selben Compilat funktioniert es unter Windows XP? Was hast du für ein Windows 7? 64-Bit und was ist es für ein Compilat? Mit 32-Bit Compilat unter Windows 7 64-Bit habe ich keine Probleme. wird denn die Routine auch ausgeführt unter Windows 7? Bau mal eine Ausgabe irgendwie ein. Entweder Konsole oder eine Messagebox.
Und kannst du eine Demoprogramm machen und die Exe mal hier anhängen? Dann kann ich dein Compilat mal hier ausführen und gucken, ob es bei mir geht. |
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Luckie
Muss leider zur Zeit an einem anderen Projekt weiterarbeiten, desshalb hier noch kurz das exe mit einer Demodatei zum Laden. Das ganze hat unter XP sehr gut geklappt. Unter Win 7 /64 Bit gab es dann aber bei der Temperaturkurve nur ein weisses "Blatt" anstelle der Kurve. Bin noch auf der Suche nach einem Win 7 / 32Bit. Das angefügte Projekt wurde auf einem Delphi XE2 und Win XP Rechner übersetzt. Danke für Eure Bemühungen... |
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
Bei mir kommen ein paar Fehlermeldung und wenn ich die Datei öffne laufen die Fortschrittsbalken durch aber dann passiert nichts weiter. ist das eine 32 oder 64 Bit Exe?
|
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
Es ist eine 32-Bit Compilierung...
Nachdem die Daten eingelesen wurden, müsstest Du den Button zum Anzeigen der Temperaturdaten drücken. Dies ist der längliche Button mit dem Temperaturdiagramm als Grafik. Danach sollte ein Fenster geöffnet werden, wo Du die Temperaturwerte grafisch in einer Kurvenform angezeigt bekommst. |
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
Abgesehen davon, dass die Datumsauswahl nicht richtig zu funktionieren scheint ("Kalenderzeit oder -datum konnte nicht gesetzt werden.") wird hier eine Kurve unter Windows 7 x64 angezeigt. Auch das Blättern durch die Punkte funktioniert inkl. Markierung.
Allerdings solltest du, mal so nebenbei gesagt, die Positionierung der Formulare einmal auf einem PC mit mehreren Bildschirmen (insbesondere zweien) testen... Der kleine Startbildschirm wird genau auf der Kante zwischen zweien angezeigt, das Hauptfenster habe ich rechts, aber die Fenster erscheinen links, ... ;-) |
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
Danke für die rasche Antwort!
Hab das Problem mit dem Kalender noch nie gehabt. Jrgend eine Idee, woran das liegen könnte? Hast natürlich Recht mit den Bildschirmen. Hab unterdessen auch schon das eine oder andere Programm gesehen, welches das selbe Problem hatte. Kann man glaub ich ganz einfach im Objektinspektor für das Formular beheben. (Eigenschaft: Position) Hab dort für das Mainfenster "poDefault" eingetragen :roll: Komisch, dass Du die Temperaturkurve sehen kannst. Hab jetz auf 3 Rechnern das Problem gehabt, dass wie gesagt nur ein weisser Hintergrund zu sehen war... |
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
Liste der Anhänge anzeigen (Anzahl: 1)
Vielleicht bringt dich die Problemaufzeichnung im Anhang weiter.
Dem Gleitkommafehler beim ersten Klick ins Diagramm würde ich besondere Beachtung schenken. Windows 7 Home 64 Bit! |
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
Moin,
Bau mal das Image in eine Paintbox (ggf. mit einem Bitmap als Graphicspeicher) um. Der Image.Canvas ist mit Vorsicht zu geniessen da ein Image als Kontainer für Bitmaps, Jpegs usw. gedacht ist und nicht als Zeichenfläche. Das mit dem Kalender, setzt du da irgend ein Datum ? Was passiert wenn du das Programm als / mit Adminrechten ausführst ? |
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
@ TiGü:
Wohw... da hast Du Dich aber mächtig in's Zeug gelegt! -D Ist natürlich super so ne Aufzeichnung, ein paar Dinge sind mir schon klar. Werde wohl nochmal über die Bücher müssen. Wie hast Du die Aufzeichnung gemacht. Ist wirklich eine sehr praktische Sache! @ turboPASCAL: Komme leider erst am Freitag wieder an den Entwicklungsrechner mit Delphi MX2 um die Sachen auszuprobieren. Werde mal versuchen das Ganze in einer Paintbox zu zeichnen. Hast natürlich Recht, diese Komponente ist sicher besser geeignet für sowas. Ich werden Euch auf dem Laufenden halten. Erstmal herzlichen Dank für Eure Bemühungen! |
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
Zitat:
![]() |
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
Ach und mach mal die Überlauf.- und Bereichsüberprüfung in den Kompieleroptionen an (wenn noch nicht gemacht).
|
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
Hallo Leute
Finde nun wieder Zeit an dem Problem weiter zu arbeiten und habe folgende Beobachtung gemacht: Auf meinem Windows 7 (64Bit) Entwicklungsrechner hatte ich das Problem mit dem leeren Canvas am Anfang auch. Nach beheben des Datums- Problems der DateTimePicker Komponente, lief es problemlos auf meinem Rechner. Voller Freude installierte ich die Software auf einem anderen Rechner und siehe da, das Problem war wieder da. Es war keine Grafik auf dem Canvas sichtbar :-( Beim Aufstarten des Programms wurde übrigens das Farbschema von Windows 7 umgestellt (?) Habe schon sämtliche Eigenschaften der exe- Datei ausprobiert (Admin, Kompatibilität, visuelle Designs usw...) Ich weiss echt nicht mehr weiter und wäre um jeden Tipp sehr froh! |
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
Hab nun ein Testprogramm mit eingekürztem Code geschrieben... Es läuft, ich kann die gezeichnete Grafik sehen:roll:
Hab auch schon das XP Manifest ohne Erfolg entfernt. Könnte es mit einer Einstellung des Images im Objektinspektor zu tun haben? |
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
So, endlich! Ich habe den Übeltäter erwischt.
Es ist die Autosize Eigenschaft des Images. Nach dem deaktivieren, siehe da, die Grafik wird gezeichnet. Allerdings noch nicht in dem gewünschten Format, wie ich es mir wünsche. Die Grafik wird nun verkleinert gezeichnet. |
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
Kann mir bitte jemand erklären, weshalb die AutoSize Eigenschaft unter Windows 7 dazu führt, dass eine selbst gezeichnete Grafik auf einem Image.Canvas nur noch als weisse Fläche erscheint.
Bin am Verzweifeln und für jeden Hinweis sehr dankbar! |
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
was zeichnest Du wie ....?
|
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Bummi
Im Anhang findest Du die Source Datei falls es Dich interessiert. Bin wieder ein Stück weitergekommen: Es hat mir den Admin Rechten zu tun. Wenn ich keine Admin Rechte besitze, erscheint beim Einlesen der Temperatur- Daten eine Fehlermeldung betreffend Bereichsüberschreitung. Dabei wird in der Software ein Flag zurückgesetzt (Data_ok := False;) Ist dieses Flag nicht gesetzt, werden einzelne Routinen nicht ganz abgearbeite, was zu diesem Effekt führt. Nun muss ich noch herausfinden, was diese Bereichsüberschreitung verursacht... |
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
Das Problem ist viel mehr das du auf die Canvas zeichnest welche beim nächsten Repaint leer gemacht wird.
Richtig wäre hier eine Paintbox und im OnPaint zu zeichnen oder auf der Grafik vom TImage. Direkt auf TImage.Canvas zu zeichnen ist fast so effektiv wie direkt auf dem Desktop zu malen und sich dann zu wundern dass, das gemalte weg ist sobald eine andere Anwendung an der Stelle sich neu zeichnet. |
AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
Danke für die Antwort.
Bin mir aber nicht sicher, ob dies tatsächlich das Problem ist. Wenn das Grafikfenster geöffnet ist, kann ich mit einem Fenster einer anderen Applikation problemlos darüber fahren, ohne das der Inhalt überschrieben wird. Bisher hat es ja unter Windows XP / Vista die letzten Jahre auch nie Probleme gegeben. Das Phänomen trat erst mit Win 7 auf... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz