Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Mit DLL auf TImage zeichnen (https://www.delphipraxis.net/63748-mit-dll-auf-timage-zeichnen.html)

kabuco 22. Feb 2006 13:43


Mit DLL auf TImage zeichnen
 
Hallo,

ich habe ein kleines Problemchen mit meiner DLL!
Ich möchte mit dieser DLL auf ein TImage zeichnen. Jetzt ist die Frage, wie ich dieser DLL das Zeichnen "Beibringen" kann.

Also ich bräuchte nur einen Tipp wie ich auf die TImage per DLL zugreifen kann. Über ein Codestück würde ich mich nartürlich auch freuen.

MFG

Kabuco

himitsu 22. Feb 2006 14:47

Re: Mit DLL auf TImage zeichnen
 
Du mußt der DLL/Prozedur einfach eine Zeiger auf das TImage-Objekt mitgeben.
Am Einfachsten die Variable.
Delphi-Quellcode:
// im Programm
Var Image1: TImage;
...
Zeichne(Image1);


// in der DLL:
Prozedure Zeichne(Image: TImage);
  Begin
    // jetzt kannst du genau das Selbe machen, was du auch im eigentlichem Programm machen könntest.
  End;
aber wenn es sich um ein Bild mit Farbtabelle (also z.B. BitMaps mit 1, 4, oder 8 BitsProPixel), dann lass es lieber, da es hierbei zu schwerwiegenden Speicherproblemen kommen kann, wenn da irgendwas an der Farbtabelle verändert wird und man nicht auf bestimmte Dinge achtet.

SirThornberry 22. Feb 2006 15:52

Re: Mit DLL auf TImage zeichnen
 
warum muss es eigentlich unbedingt das TImage sein? reicht dir nicht das CanvasHandle um zu zeichnen? Ob die Canvas dabei zu einem TImage, Bitmap etc. gehört kann dir dabei doch eigentlich egal sein wenn du was malen willst.

kabuco 22. Feb 2006 15:54

Re: Mit DLL auf TImage zeichnen
 
@himitsu: Danke werd das mal ausprobieren.

@SirThornberry: TIMage bietet sich an, um nachher das Bild zu spiechern.

kabuco 22. Feb 2006 16:10

Re: Mit DLL auf TImage zeichnen
 
Sorry für den Doppelpost, aber ich bekomme eine Zugriffsverletzung wenn ich den Code von Himitsu verwende.

Kann mir da jemand helfen.

Zitat:

Zitat von Meldung
Zugriffsverletzung bei Adresse 00CBDD2A in Modul 'Project2.dll'. Lesen von Adresse 00000004.


SirThornberry 22. Feb 2006 17:18

Re: Mit DLL auf TImage zeichnen
 
die zugriffsverletzung kommt wegen dem was in dem Textabschnitt ganz oben in einem neuen DLL-Projekt steht. Ich würde dir empfehlen nur das Handle der Canvas in die DLL rein zu reischen. (Speichern kannst du ja außerhalb der DLL dann trotzdem noch)

kabuco 23. Feb 2006 12:01

Re: Mit DLL auf TImage zeichnen
 
Könntest du mir ein Beipiel für eine DLL geben, die diesen Canvas Handle verwendet?

SirThornberry 23. Feb 2006 12:24

Re: Mit DLL auf TImage zeichnen
 
wie man auf eine Canvas malt weißt du, oder? dementsprechend könnte eine Funktion die auf eine Canvas malt so aussehen
Delphi-Quellcode:
procedure DrawToCanvas(ADC: HDC);
var LCanvas: TCanvas;
begin
  LCanvas := TCanvas.Create;
  LCanvas.Handle := ADC;
  LCanvas.TextOut(0, 0, 'TestText');

  LCanvas.Handle := 0;
  LCanvas.Free;
end;
Diese funktion einfach exportieren und schon hast du ne procedure in einer dll die einen Text auf deine Canvas ausgibt. Die Api-Funktionen BitBlt, StretchBlt, AlphaBlend etc. sind auch gute Beispiele, denn auch diese funktionen toben sich an der Canvas (CanvasHandle) aus.

kabuco 26. Feb 2006 13:11

Re: Mit DLL auf TImage zeichnen
 
Danke! Hat mir wirklich geholfen. Werde das mal in mein Programm einbauen.

Danke nochmals

kabuco


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