AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Mit DLL auf TImage zeichnen
Thema durchsuchen
Ansicht
Themen-Optionen

Mit DLL auf TImage zeichnen

Ein Thema von kabuco · begonnen am 22. Feb 2006 · letzter Beitrag vom 26. Feb 2006
Antwort Antwort
kabuco
(Gast)

n/a Beiträge
 
#1

Mit DLL auf TImage zeichnen

  Alt 22. Feb 2006, 13:43
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.123 Beiträge
 
Delphi 12 Athens
 
#2

Re: Mit DLL auf TImage zeichnen

  Alt 22. Feb 2006, 14:47
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Mit DLL auf TImage zeichnen

  Alt 22. Feb 2006, 15:52
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
kabuco
(Gast)

n/a Beiträge
 
#4

Re: Mit DLL auf TImage zeichnen

  Alt 22. Feb 2006, 15:54
@himitsu: Danke werd das mal ausprobieren.

@SirThornberry: TIMage bietet sich an, um nachher das Bild zu spiechern.
  Mit Zitat antworten Zitat
kabuco
(Gast)

n/a Beiträge
 
#5

Re: Mit DLL auf TImage zeichnen

  Alt 22. Feb 2006, 16:10
Sorry für den Doppelpost, aber ich bekomme eine Zugriffsverletzung wenn ich den Code von Himitsu verwende.

Kann mir da jemand helfen.

Zitat von Meldung:
Zugriffsverletzung bei Adresse 00CBDD2A in Modul 'Project2.dll'. Lesen von Adresse 00000004.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Mit DLL auf TImage zeichnen

  Alt 22. Feb 2006, 17:18
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)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
kabuco
(Gast)

n/a Beiträge
 
#7

Re: Mit DLL auf TImage zeichnen

  Alt 23. Feb 2006, 12:01
Könntest du mir ein Beipiel für eine DLL geben, die diesen Canvas Handle verwendet?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Mit DLL auf TImage zeichnen

  Alt 23. Feb 2006, 12:24
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
kabuco
(Gast)

n/a Beiträge
 
#9

Re: Mit DLL auf TImage zeichnen

  Alt 26. Feb 2006, 13:11
Danke! Hat mir wirklich geholfen. Werde das mal in mein Programm einbauen.

Danke nochmals

kabuco
  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 14:27 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