![]() |
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 |
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:
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.
// 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; |
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.
|
Re: Mit DLL auf TImage zeichnen
@himitsu: Danke werd das mal ausprobieren.
@SirThornberry: TIMage bietet sich an, um nachher das Bild zu spiechern. |
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:
|
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)
|
Re: Mit DLL auf TImage zeichnen
Könntest du mir ein Beipiel für eine DLL geben, die diesen Canvas Handle verwendet?
|
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:
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.
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; |
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 10:46 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