Delphi-PRAXiS
Seite 1 von 3  1 23      

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:30 Uhr.
Seite 1 von 3  1 23      

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