Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7 (https://www.delphipraxis.net/169163-keine-grafikausgabe-mit-image1-canvas-moveto-unter-win-7-a.html)

andydp 3. Jul 2012 09:44

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:
/ 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....
Der Canvas bleibt einfach leer, d.h. nur der weisser Hintergrund ist sichtbar.

Danke für Eure Hilfe...

Luckie 3. Jul 2012 10:00

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;

himitsu 3. Jul 2012 10:02

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:

d.h. nur der weisser Hintergrund ist sichtbar.
OK :oops:
[/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, ...)

andydp 3. Jul 2012 10:50

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:
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;
Im Anhang findet Ihr noch einen Printscreen des Objektinspektors...

Luckie 3. Jul 2012 12:08

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.

andydp 3. Jul 2012 12:28

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...

Luckie 3. Jul 2012 13:24

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?

andydp 3. Jul 2012 13:32

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.

jaenicke 3. Jul 2012 13:41

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, ... ;-)

andydp 3. Jul 2012 14:13

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...

TiGü 4. Jul 2012 06:43

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!

turboPASCAL 4. Jul 2012 07:41

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 ?

andydp 4. Jul 2012 09:06

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!

TiGü 4. Jul 2012 09:12

AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
 
Zitat:

Zitat von andydp (Beitrag 1173466)
Wie hast Du die Aufzeichnung gemacht. Ist wirklich eine sehr praktische Sache!

Einfach “PSR” ins Windows 7 Startmenü-Eingabefeld schreiben und Enter.
http://windows.microsoft.com/en-US/w...Steps-Recorder

turboPASCAL 4. Jul 2012 15:13

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).

andydp 18. Sep 2012 11:02

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!

andydp 18. Sep 2012 13:27

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?

andydp 18. Sep 2012 14:20

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.

andydp 19. Sep 2012 15:41

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!

Bummi 19. Sep 2012 15:43

AW: Keine Grafikausgabe mit Image1.Canvas.MoveTo... unter Win 7
 
was zeichnest Du wie ....?

andydp 20. Sep 2012 10:35

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...

SirThornberry 20. Sep 2012 12:28

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.

andydp 20. Sep 2012 13:40

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 15:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz