AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Problem: JPG auf Canvas zeichnen
Thema durchsuchen
Ansicht
Themen-Optionen

Problem: JPG auf Canvas zeichnen

Ein Thema von MarkusJa · begonnen am 29. Jan 2008 · letzter Beitrag vom 29. Jan 2008
Antwort Antwort
MarkusJa

Registriert seit: 26. Apr 2007
3 Beiträge
 
#1

Problem: JPG auf Canvas zeichnen

  Alt 29. Jan 2008, 18:41
Erstmal ein "Hallo" an alle, da ich ja neu hier bin.

So, nicht meckern, wenn das eine "Sinnlose" Frage ist, aber ich beschäftige mich erst seit ca 1,5 Jahren mit Delphi(in der Schule).

Also.. Hab folgendes Problem.
Ich möchte ein JPG zeichnen lassen. Also habe ich es einfacherweise auf das Formblatt zeichnen lassen mit:
Delphi-Quellcode:
var p: TPicture;
p := TPicture.Create;
p.LoadFromFile ('deck\test.jpg');
form1.Canvas.Draw (20, 20, p.Graphic);
p.Free;
Das funktioniert auch wie gewollt. Wenn ich aber mit irgendetwas über die Anwendung gehe, wird das Bild sozusagen "weg radiert". Kann man das irgendwie ändern?

Habe mir auch schon gedacht, zeichneste das Bild einfach auf ein Canvas eines TImage Elements. Funktioniert auch prima und kann auch nicht weg radiert werden, aber der Hintergrund ist dann so komisch weiß und nicht transparent. :/

Kann mir einer helfen?

Grüße
  Mit Zitat antworten Zitat
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Problem: JPG auf Canvas zeichnen

  Alt 29. Jan 2008, 18:44
hi,
also erstmal ein herzliches willkommen in der dp
zu deinem problem:
guck dir mal die aktion onresize bei form1 oder wie das bei dir heißt an!
das ist jetzt zwar nicht das sauberste aber tus doch in n timer.

MFG Lars Wiltfang
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#3

Re: Problem: JPG auf Canvas zeichnen

  Alt 29. Jan 2008, 18:45
Versuchs mal mit dem Ereignis OnPaint in deinem Formular. Die JPEG lädst du im Create (OnPaint wird oft aufgerufen unter Umständen, darum das LoadFromFile auslagern), gibst sie im Destroy wieder frei und malst im OnPaint. Das könnte hinhauen
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
MarkusJa

Registriert seit: 26. Apr 2007
3 Beiträge
 
#4

Re: Problem: JPG auf Canvas zeichnen

  Alt 29. Jan 2008, 18:55
Zitat von wicht:
Versuchs mal mit dem Ereignis OnPaint in deinem Formular. Die JPEG lädst du im Create (OnPaint wird oft aufgerufen unter Umständen, darum das LoadFromFile auslagern), gibst sie im Destroy wieder frei und malst im OnPaint. Das könnte hinhauen
Glaube das geht nicht... Male das Bild ja per ButtonClick... Oder geht das damit auch?

Zitat:
guck dir mal die aktion onresize bei form1 oder wie das bei dir heißt an!
das ist jetzt zwar nicht das sauberste aber tus doch in n timer.
Hm? Wie meinst du das?

Grüße
  Mit Zitat antworten Zitat
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Problem: JPG auf Canvas zeichnen

  Alt 29. Jan 2008, 19:00
du schreibst deinen code einfach in nen timer machst intervall auf 1 millisekunde
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#6

Re: Problem: JPG auf Canvas zeichnen

  Alt 29. Jan 2008, 19:11
Timer zum Zeichnen? Geht' s noch? Definiere Dir eine Variable vom Typ TJPEGImage, lade diese und zeichne sie OnPaint auf Dein Formular, wie bereits vorgeschlagen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
MarkusJa

Registriert seit: 26. Apr 2007
3 Beiträge
 
#7

Re: Problem: JPG auf Canvas zeichnen

  Alt 29. Jan 2008, 19:32
Zitat von DeddyH:
Timer zum Zeichnen? Geht' s noch? Definiere Dir eine Variable vom Typ TJPEGImage, lade diese und zeichne sie OnPaint auf Dein Formular, wie bereits vorgeschlagen.
Naja, ansich geht es, wenn ich das Bild in OnCreate lade und in OnPaint zeichne. Aber wenn ich dann ein Fenster drüber ziehe, stürzt es ab. :/ Und per Button kann ich das Bild auch nicht laden... :/
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#8

Re: Problem: JPG auf Canvas zeichnen

  Alt 29. Jan 2008, 19:37
Zeig mal den Code.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#9

Re: Problem: JPG auf Canvas zeichnen

  Alt 29. Jan 2008, 19:38
Wenn du es mit dem Button anzeigen willst, führst du eben ein Boolean Variable ein, die du beim Klick auf den Button auf True setzt.. so:

Delphi-Quellcode:
type
  class TForm1 = class(TForm)
  private
    ShowImage: Boolean;
  end;

implementation

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowImage := not ShowImage;
end;
Im OnPaint prüfst du vor dem .Draw() eben, ob die Variable auf True ist... Wegen dem Absturz: Code her

Edit: Dummer ***** Kasten
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#10

Re: Problem: JPG auf Canvas zeichnen

  Alt 29. Jan 2008, 19:51
Andere Möglichkeit: das JPEGImage mit nil initialisieren, bei Bedarf erzeugen und laden und OnPaint Assigned benutzen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:41 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