Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi GDI+ Klappt nicht (https://www.delphipraxis.net/149808-gdi-klappt-nicht.html)

delphiRenorm 30. Mär 2010 22:51


GDI+ Klappt nicht
 
Hallo zusammen,

ich bin vor kurzem zu delphi übergesprungen und gleich mit der neusten version. habe versucht eine Uhr-Komponente zu schreiben,
was grundsätzlich klappt nur gefällt mir die Graphik noch nicht. Das Thema wurde hier ja bereits besprochen.
ich bin nicht sonderlich fit in graphisches programmierung habe jetz des öfteren gelesen, dass GDI+ gerade meine probleme lösen würde. Ich würde unter anderem gerne kattengeglättete linien benutzen und da stoß ich immer wieder auf GDI+ in den foren. so weit so gut, nu bekomm ich aber folgenden fehler, wenn ich eine der beispielanwendungen ausführen möchte

[DCC Fehler] DirectDraw.pas(358): E2154 Typ 'IDirectDrawSurface' benötigt Finalization - nicht im varianten Record erlaubt

meine uses lautet

uses
Windows,
Messages,
SysUtils,
GDIPAPI,
GDIPOBJ;

ich habs auch schon probiert, die DirectDraw und GDIPUTIL extra einzubetten

uses
Windows,
Messages,
SysUtils,
GDIPAPI,
GDIPOBJ,
GDIPUTIL in '..\..\..\pas\GDIPUTIL.pas',
DirectDraw in '..\..\..\pas\DirectDraw.pas';

schlägt auch fehl. hab nich wirklich nen plan woran das liegt.

ps:
falls jemand ne ausführliche einführung in graphische komponentenentwicklung kennt, gerne her damit.
vielen dank schon mal

s.h.a.r.k 30. Mär 2010 22:53

Re: GDI+ Klappt nicht
 
Es liegt nicht wirklich an den Units, die du angibst, sondern es liegt vielmehr ein Fehler in der Datei DirectDraw.pas vor. Man müsste die Stelle anschauen, warum das so ist.

Zudem würde ich erst mal prüfen, ob der Source-Code den du da hast überhaupt für D2010 gedacht ist und damit funktioniert.

delphiRenorm 31. Mär 2010 17:20

Re: GDI+ Klappt nicht
 
Die Zeile in DirectDraw wo der erste Fehler ausgespuckt wird lautet:

lpDDSZBufferDest : PDirectDrawSurface; // Surface to use as Z buffer for dest

dem folgen dann weitere, die alle mit dem Typ PDirectDrawSurface
zusammenhängen. Außer dem Versionsargument hab ich halt im Moment keine Idee woran das liegen kann, aber
das könnte ja schon die richtige antwort sein.

Gibt es ne andere möglichkeit die grafik in delphi 10 selbst zu gestalten ohne direkt die unschönen kanteneffekte, etc.
mit im boot zu haben. ich würd halt gern einige standard-komponenten graphisch meinen vorstellungen anpassen ohne
das rad neu zu erfinden. die gerade optisch glatt zu kriegen, wird wohl klappen, die ersten versuche zeigen das mal,
aber wollte halt kalender etc. aufpeppen und würd gern schon alphablending, farbverläufe direkt implementieren ohne selbst
ne unit dafür zu schreiben.
Dir erst ma danke für die antwort.

KrasserChecker 31. Mär 2010 17:37

Re: GDI+ Klappt nicht
 
Hallo,

schau dir mal das hier an:

Delphi 2009 GDI+ Library

Das ist eine der besten Implementationen der GDI+ API, die mir bis dato in Delphi untergekommen ist. Ich nutze sie selbst in einigen Anwendungen.

Von der Website:
Zitat:

It differs from other Delphi GDI+ libraries in the following ways:

* It is modeled more after the .NET System.Drawing namespace instead of the C++ GDI+ classes. As a result, this library is a bit more high level and easier to use.
* It uses object interfaces for automatic memory management and ease of use. You don't have to keep track of your graphics objects anymore.
* It uses exceptions instead of error codes to handle errors the Delphi way.
* It comes with sample applications that demonstrate the usage of GDI+ through examples from the Windows Platform SDK.
* It supports the GDI+ version 1.1 extensions that were added with Windows Vista and certain Office versions.
* Optionally provides class helpers for interoperability with Delphi's TBitmap and TCanvas.

delphiRenorm 31. Mär 2010 20:18

Re: GDI+ Klappt nicht
 
Das ist des Rätsels Lösung. Klasse Link und tolle Demos. Sehr zu empfehlen. Danke für den Tipp

macadamia 9. Jul 2010 10:35

AW: GDI+ Klappt nicht
 
Ansonsten ist der Grund für den ersten Fehler, dass eine Compiler-Konstante "DELPHI5_UP" verwendet wird, die aber nicht definiert ist. Daher wird der Code für älteres Delphi angenommen, was zu dem Fehler führt. Wenn Du die Konstante definierts, geht es.

iGoA 7. Apr 2011 15:43

AW: GDI+ Klappt nicht
 
Falls mal in ein paar Jahren wieder jemand über diesen Fehler stolpert (so wie ich 100 Jahre später). Wir nutzen eine GDI+ Implementierung von http://www.progdigy.com und dort heißt die zu definierende Compilerkonstaner nicht DELPHI5_UP sondern VER140 damit die directdraw.pas kompiliert werden kann.

Thom 7. Apr 2011 16:51

AW: GDI+ Klappt nicht
 
Oder man ersetzt einfach die enthaltene Datei jedi.inc durch eine aktuelle Version. :thumb:

ATS3788 7. Feb 2012 12:08

AW: GDI+ Klappt nicht
 
Danke für den Beitrag:thumb:


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