Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Canvas und Icons (https://www.delphipraxis.net/68813-canvas-und-icons.html)

Martin K 5. Mai 2006 21:34


Canvas und Icons
 
Hi,

habe ein Icon in ein TImage geladen.
Dann wollte ich mit Canvas darauf zeichnen und es kommt diese Meldung:
Code:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EInvalidOperation aufgetreten. Meldung: 'Ein Bild kann nur geändert werden, wenn es ein Bitmap enthält'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK  Hilfe  
---------------------------
Frage:
Wie kann man auf Icons zeichnen, also ähnlich wie mit Canvas :?:

Hawkeye219 5. Mai 2006 21:41

Re: Canvas und Icons
 
Hallo Martin,

die Fehlermeldung sagt es schon: eine Zeichenfläche (Canvas) gibt es nur, wenn das TImage-Objekt eine Bitmap enthält:

Zitat:

Zitat von Delphi-Hilfe
Canvas ist nur verfügbar, wenn die Eigenschaft Picture ein TBitmap-Objekt enthält. Wenn Picture einen anderen Grafiktyp darstellt, führt der Versuch, Canvas zu lesen, zu einer EInvalidOperation-Exception.

Du wirst also dein Icon in eine Bitmap umwandeln müssen. Vielleicht findest du über die Suchfunktion in der DP einen entsprechenden Code.

Gruß Hawkeye

Martin K 5. Mai 2006 21:44

Re: Canvas und Icons
 
Hmm...
Also gibt es überhaupt keine Möglichkeit direkt auf ein TIcon zu zeichnen...?!?

Hawkeye219 5. Mai 2006 21:50

Re: Canvas und Icons
 
Hier wurde ein ähnliches Problem besprochen. Möglicherweise hilft es dir ja weiter.

Gruß Hawkeye

Martin K 5. Mai 2006 22:09

Re: Canvas und Icons
 
Jo, danke schonmal.

Aber wie kann ich abfragen, ob mein TImage ein Bitmap oder ein Icon enthält ?

Dann lasse ich das Zeichnen halt einfach nur zu, wenn das TImage ein Bitmap ist...

Hawkeye219 5. Mai 2006 22:19

Re: Canvas und Icons
 
Du kannst die Eigenschaft Graphic überprüfen:

Delphi-Quellcode:
if (Image1.Picture.Graphic = nil) then
  // kein Bild enthalten
else
  if (Image1.Picture.Graphic is TBitmap) then
    // bitmap
  else
    if (Image1.Picture.Graphic is TJPEGImage) then
      // jpg
    else
      ...
Gruß Hawkeye

Martin K 5. Mai 2006 22:26

Re: Canvas und Icons
 
Zitat:

Zitat von Hawkeye219
Du kannst die Eigenschaft Graphic überprüfen:

Delphi-Quellcode:
if (Image1.Picture.Graphic = nil) then
  // kein Bild enthalten
else
  if (Image1.Picture.Graphic is TBitmap) then
    // bitmap
  else
    if (Image1.Picture.Graphic is TJPEGImage) then
      // jpg
    else
      ...
Gruß Hawkeye

Sicher, dass das so geht ?

Bei der Überprüfung auf ein TBitmap kommt diese Fehlermeldung:
Zitat:

[Fehler] Unit1.pas(158): Operator ist auf diesen Operandentyp nicht anwendbar

Hawkeye219 5. Mai 2006 22:28

Re: Canvas und Icons
 
Du mußt darauf achten, daß in der USES-Anweisung die Unit "Windows" vor der Unit "Graphics" aufgeführt wird, da beide den Bezeichner TBitmap definieren. Hier wird aber die Definition aus der Unit Graphics benötigt.

Gruß Hawkeye

Martin K 5. Mai 2006 22:33

Re: Canvas und Icons
 
Danke, das war's :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:16 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