Einzelnen Beitrag anzeigen

delphiRenorm

Registriert seit: 30. Mär 2010
18 Beiträge
 
Delphi 2010 Professional
 
#3

AW: GDI+ oder graphics32

  Alt 9. Sep 2010, 09:23
Hi, Danke für die Antwort.
Ich werde einige Anwendungen von Grund auf neu überarbeiten, d.h. in dem Fall wäre das komplette Neu-erstellen der Komponenten sicher nicht das Problem, nur wie du auch schon gesagt hast, heißt das, sich auch noch zumindest in eins der beiden (DirectX, OpenGL) einarbeiten muss. Ich glaub das werde ich mal nach hinten schieben.

Lässt sich in GDI+ analog verfahren wie vorher üblich. D.h. beispielsweise das füllen einer beliebigen Region mit einem Muster:
Delphi-Quellcode:
...
BitmapHandle := LoadBitmap(Hinstance, '...');
Brush1:= CreatePatternBrush(BitmapHandle);

RegN:= CreateRoundRectRgn(10,10, form1.clientwidth-10,form1.clientheight-10,10,10);
FillRGN(Form1.Canvas.Handle,RegN,Brush1);

DeleteObject(RegN);
DeleteObject(Brush1);
DeleteObject(BitmapHandle);
...
nur das ich den Brush abändere in TGPBrush (oder wie die da heißen) so dass ich auch transparent-effecte und antialiasing beim Füllen nutzen kann. Ansonsten würd ich mich vllt nur in graphics32 einlesen, wobei ich da auch wieder tausend Fragen hätte. Da beide sich nicht ausschließen, wäre es für mich nun interessant ob ich die Techniken der alten WIN32 graphic API einfach übertragen kann auf das GDI+ konzept (bsp überall nen GP vor oder so) und an manchen stellen vllt auf schnellere Funktionen der graphics32-lib zurückgreifen soll, oder ob ich für GDI+ wieder ne Menge Zeit investieren muss.

Ah, vllt mein Vorhaben mal etwas präziser ausgedrückt:
Komponenten erstellen, die letztlich sehr flexible in ihrer graphischen Darstellung sind. D.h. die Komponenten vergleichbar mit Button/ Panels, Labels,... sollen von einer Control abgeleitet werden, die es ermöglicht beliebige Regionen (Sterne,RoundRect,...) mit beliebigen Mustern zu füllen (Bilder, Verläufe,...) und dabei die hässlichen Kanten glätten und Teil-Transparenz-Effekte erlauben, eventuell müsst ich nur noch ne Funktion für Spiegelungseffekte auf dem Hintergrund erstellen. Hab ich diese Komponente, kann ich mir kompliziertere Objekte daraus ableiten, die dann Button simulieren, oder als Items einer speziellen Listbox auftreten, etc. Letztlich wäre ich sehr flexibel (lässt man mal 3D-Effekte außen vor) in der Gestaltung von meinen Komponenten und ich müsste die alten Buttons nur durch meine neuen abgleiteten Komp. ersetzen.

Geändert von mkinzler ( 9. Sep 2010 um 10:19 Uhr) Grund: Code-Tag durch Delphi-Tag ersetzt
  Mit Zitat antworten Zitat