Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi In Image zeichnen (https://www.delphipraxis.net/37202-image-zeichnen.html)

maximus Caesar 2. Jan 2005 14:13


In Image zeichnen
 
Hallo!
Ich versuche, in ein Image zu zeichnen, in das ich zuvor mit canvas.draw ein jpg geladen habe.
Nun kommt eine meldung, dass ich nur in Bitmaps zeichnen kann!
Muss ich jetzt das Jpg in ein Bitmap umwandeln? Wenn ja, wie mache ich das?

Sharky 2. Jan 2005 14:56

Re: In Image zeichnen
 
Hai Caesar :stupid:

ich habe das jetzt mal mit diesem Code gemacht:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  jpeg : TJPEGImage;
begin
  if (OpenPictureDialog1.Execute) then
  begin
    jpeg := TJPEGImage.Create;
    try
     jpeg.LoadFromFile(OpenPictureDialog1.FileName);
     Image1.Canvas.Draw(0,0,jpeg);
    finally
      jpeg.Free;
    end;
    Image1.Canvas.MoveTo(10,10);
    Image1.Canvas.Pen.Width := 10;
    Image1.Canvas.LineTo(100,100);
  end;
end;
Oder meintest Du etwas ganz anderes?

maximus Caesar 2. Jan 2005 15:03

Re: In Image zeichnen
 
Also, ich habe ohne irgendeinen Dialog ein jpg bild in Image2 geladen.
Jetzt will ich ein Rechteck mit Canvas. Retagle (oder so ähnlich) da hinein zeichnen.
Sobald ich es versuche bekomme ich eine Meldung, dassich nicht in jpg's, sondern nur in bmp's zeichnen kann!
und jetzt möchte ich wissen, wie ich in das jpg zeichnen kann, oder dieses in ein bmp umwandeln!

Wuaegner 2. Jan 2005 15:36

Re: In Image zeichnen
 
Wie versuchst du denn da rein zu zeichnen?
Wenn du auf Image1.Canvas zeichnest müsste es doch gehen.

maximus Caesar 2. Jan 2005 15:42

Re: In Image zeichnen
 
Dann kommt die besagte Meldung, dass ich nur in Bitmaps, und nicht in Jpegs zeichnen kann!
Ich versuche es mit:
Delphi-Quellcode:
Form1.Image2.Canvas.Rectangle(x1,y1,x2,y2);

Sharky 2. Jan 2005 15:44

Re: In Image zeichnen
 
Hmm...
wenn ich das mit meinem Code oben mache geht es. Den Dialog zum öffnen habe ich nur drinnen um nicht den Pfad zum Bild tippen zu müssen.

maximus Caesar 2. Jan 2005 15:49

Re: In Image zeichnen
 
Hier jetzt mal der genaue Text der Meldung:

Project Project1.exe raised exception class EInvalidOperation with message 'Can only modify an image if it contais a bitmap'. Process stopped. Use Step or Run to continue.

Sharky 2. Jan 2005 15:52

Re: In Image zeichnen
 
Hai maximus,

hast Du in dem Image schon etwas zur Entwurfszeit geladen? Wenn Ja -> Lösche es mal.

maximus Caesar 2. Jan 2005 15:55

Re: In Image zeichnen
 
Hab ich leider nicht!

maximus Caesar 2. Jan 2005 15:57

Re: In Image zeichnen
 
Hab jetzt den Code oben nochmal ausprobiert!
Die Meldug erscheint immernoch...

Wuaegner 2. Jan 2005 15:58

Re: In Image zeichnen
 
Zitat:

hast Du in dem Image schon etwas zur Entwurfszeit geladen? Wenn Ja -> Lösche es mal.
Das macht doch gar keinen Unterschied oder?:gruebel:

Das problem mit jpg ist trotzdem da.

maximus Caesar 2. Jan 2005 16:08

Re: In Image zeichnen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also, im Anhang is mal das ganze Programm!
Ich hoffe es hilft!

Sharky 2. Jan 2005 16:12

Re: In Image zeichnen
 
Hai Caesar,

Du verwendest Da irgendwelche Units die wohl nicht bei Delphi dabei seind. Darum kann ich das Programm nicht testen.

maximus Caesar 2. Jan 2005 16:22

Re: In Image zeichnen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Sorry! Diesesmal müsste es stimmen!

Sharky 2. Jan 2005 16:28

Re: In Image zeichnen
 
gifimage <- Wird nicht gefunden.
Und das Bild welches im Timer geladen werden soll ist wohl auch nicht da :gruebel:

fkerber 2. Jan 2005 16:32

Re: In Image zeichnen
 
Hi!

Mir fehlt noch gifImage.

Seltsamerweise greifst du auf Units zu die im übergeordneten Ordner liegen (in dem zip von dir aber im selben)
Ist das richtig so?


Ciao Frederic

P.S. Dein Packer ist "blöd". Er hat ne Maximal-Pfadlänge, in die mein Wunschordner nicht passte

maximus Caesar 2. Jan 2005 16:37

Re: In Image zeichnen
 
Liste der Anhänge anzeigen (Anzahl: 1)
ok, also gifimage kannst du rausschmeisen, wird noch nicht verwendet.
Das Bild is hier im Anhang, Einfach in den Unterordner Grafik kopieren!
(eine *.exe Datei, da die normale endung der Datei hier nicht eerlaubt ist!)
also, wenn das programm jetzt gestartet wird, klickt man auf "Laden", wählt die Datei in der Liste aus und drückt auf "Laden".
Nun ist das Bild in Form1 zu sehen.
Jetzt klickt man auf "Wegpunkte setzen", an zwei vershciedenen stellen auf Form1. Nun kommt der Fehler!

maximus Caesar 2. Jan 2005 16:43

Re: In Image zeichnen
 
Zitat:

Zitat von fkerber
Seltsamerweise greifst du auf Units zu die im übergeordneten Ordner liegen (in dem zip von dir aber im selben)
Ist das richtig so?

Die müssten alle im gleichen Ordner sein!

Sharky 2. Jan 2005 16:46

Re: In Image zeichnen
 
Sag mal, wie kannst Du das Programm überhaupt testen? In der Unit1 in der Procedure MousePosition ist eine Variable nicht deklariert.

Und... sei mir nicht böse.... aber der Quellcode sollte mal einheitlich formatiert werden ;-)

fkerber 2. Jan 2005 16:49

Re: In Image zeichnen
 
Hi!

Doch an einer Stelle brauch er GifImage.

Ciao Frederic

Sharky 2. Jan 2005 16:51

Re: In Image zeichnen
 
Hmmmm.... Du lädst die Hintergrundgrafik in Image3. Dann versuchst Du in Image1 zu zeichen. Und da dieses Leer ist kommt wohl die Fehlermeldung.

Wuaegner 2. Jan 2005 16:54

Re: In Image zeichnen
 
Zitat:

Und da dieses Leer ist kommt wohl die Fehlermeldung.
hab dein Programm jetzt nicht getestet, dein Problem aber nachgestellt. Der Fehler tritt bei mir auch auf und da ist nichts leer. Das jpg mag er nicht.

Sharky 2. Jan 2005 16:56

Re: In Image zeichnen
 
Zitat:

Zitat von Wuaegner
....
hab dein Programm jetzt nicht getestet, dein Problem aber nachgestellt. Der Fehler tritt bei mir auch auf und da ist nichts leer. Das jpg mag er nicht.

Hast du auch mal geschaut wo er im Code zeichnen möchte und in welches Image er das Bild lädt? Oder wie soll ich verstehen "...nicht getest,... aber nachgestellt"?

maximus Caesar 2. Jan 2005 16:58

Re: In Image zeichnen
 
Liste der Anhänge anzeigen (Anzahl: 1)
So. Das hier müsste jetzt entgültig funktionieren!!!

Das mit den Variablen und so waren ein paar Fehler von mir, die entstanden sind als ich gerade gifimage und co gelöscht habe!
:duck:

Ähm, wo zeichne ich in Image1? hab ich nicht gefunden!

Bitte die Grafik verwnden, die ich vorhin hochgeladen habe!

Wuaegner 2. Jan 2005 17:03

Re: In Image zeichnen
 
Zitat:

Hast du auch mal geschaut wo er im Code zeichnen möchte und in welches Image er das Bild lädt? Oder wie soll ich verstehen "...nicht getest,... aber nachgestellt"?
Ich habe wie er beschrieben hat ein jpg in ein Image geladen und dann versucht ein Rechteck auf die Canvas des Images zu zeichnen. Da kommt dann die von ihm angesprochene Fehlermeldung.
Darum musste ich sein Programm nicht anschauen.

maximus Caesar 2. Jan 2005 17:05

Re: In Image zeichnen
 
kann es vielleicht sein, dass das nur bie Delphi 6 kommt?

Wenn ja, wie kann ich dann das Jpg in ein bmp umwandeln?

maximus Caesar 2. Jan 2005 17:21

Re: In Image zeichnen
 
Das ganze funktioniert so wie es soll, solange ich kein jpg lade!
funktioniert auch, wenn das Image leer ist, dann wird das Rechteck einfach auf einen weißen Hintergrund gezeichnet!

Wuaegner 2. Jan 2005 17:28

Re: In Image zeichnen
 
Kannst nicht einfach deine jpg in Paint öffnen und als .bmp speichern?!

maximus Caesar 2. Jan 2005 17:31

Re: In Image zeichnen
 
Das währe natürlich eine möglichkeit!
Aber ich wollte für das Programm ausschlieslich jpg's und gif's verwenden!
Jpg's, da sie kleiner sind als Bitmaps, und gif's für animierte Bilder.

Kannst du mir sagen, wie ich Jpg's in Bitmaps umwandeln kann?

Wuaegner 2. Jan 2005 17:34

Re: In Image zeichnen
 
Zitat:

Kannst du mir sagen, wie ich Jpg's in Bitmaps umwandeln kann?
Zitat:

jpg in Paint öffnen und als .bmp speichern
das sollte funktionieren.

maximus Caesar 2. Jan 2005 17:37

Re: In Image zeichnen
 
Ich meinte eigentilich in meinem Programm! :)

Wuaegner 2. Jan 2005 17:40

Re: In Image zeichnen
 
Hilfsbereit wie ich bin :)
spuckte die Suche folgendes aus:
Code:
var
  jpgImg : TJPEGImage;
  bmpImg : TBitmap;
begin
  jpgImg := TJPEGImage.Create;
  try
    jpgImg.LoadFromFile('c:\test.jpg');
    bmpImg := TBitmap.Create;
    try
      bmpImg.Assign(jpgImg);
      bmpImg.SaveToFile('c:\test.bmp');
    finally
      bmpImg.Free;
    end;
  finally
    jpgImg.Free;
  end;
end;

maximus Caesar 2. Jan 2005 17:47

Re: In Image zeichnen
 
Funktioniert!!!!
Danke!!! :thumb:
Damit ist mein Problem gelöst!


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:57 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 by Thomas Breitkreuz