Autor |
Beitrag |
_Marius
Hält's aus hier
Beiträge: 10
|
Verfasst: Do 23.03.06 16:21
Hallo zusammen!
Wir realisieren demnächst in der Schule im Team ein Softwareprojekt und das bewegt sich im Grafikbereich. Da ich nicht sehr viel Ahnung von Delphi hab (kann aber C# mit .NET programmieren), wollte ich mich mal erkundigen, was Delphi denn so im Bereich Grafik kann.
Ganz besonders interessiert mich, ...
...ob ich eine Bitmap/ein Image im Speicher erstellen kann und diese dann bearbeiten (Linien, Rechtecke oder Text reinzeichnen, usw.) bzw. zwei Bitmaps ineinander kopieren kann.
...ob Delphi so was ähnliches wie den GraphicsPath und den TextureBrush bei .NET unterstützt.
...ob in Images/Bitmaps Transparenz unterstützt wird.
...ob Delphi Bilder drehen und skalieren kann.
Ich glaube wir benutzen Version 6 von Delphi, bin mir aber nicht ganz sicher. Auf jeden Fall unterstützt sie noch kein .NET.
Vielen Dank schon mal im Voraus!
Marius
|
|
Lossy eX
      
Beiträge: 1048
Erhaltene Danke: 4
|
Verfasst: Do 23.03.06 16:46
Ich denke mal du hast ein bisschen falsche Vorstellungen von Delphi. Delphi ist eine Programmiersprache und mit einer solchen Programmiersprach kannst du primär erst einmal alles machen. Trifft aber nicht auf alle zu. Du könntest fehlende Funktionalitäten selber implementieren oder eine Grafikschnittstelle ansprechen die so etwas kann. Das hat jetzt aber mit Delphi nichts direkt zu tun.
Solche Schnittstellen wären zum Beispiel GDI (kann nicht alles), GDI+ (weiß nicht obs alles kann), OpenGL oder DirectX.
Je nachdem was ihr vor habt entscheidet sich also welche Schnittstelle ihr verwenden solltet. Möglich ist grundsätzlich erst einmal alles. Es macht aber auch nicht immer alles einen Sinn.
PS: Ich meine die Zeichenfunktionen in .NET basieren oder benutzen die GDI+.
_________________ Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
|
|
_Marius 
Hält's aus hier
Beiträge: 10
|
Verfasst: Do 23.03.06 17:06
Hallo Lossy eX!
Danke für deine schnelle Antwort!
Sorry, ich hab mich wohl falsch ausgedrückt. Ich meine, ob man diese Dinge mit den Bibliotheken, die standardmäßig mit Borland Delphi ausgeliefert werden, bewerkstelligen kann, ohne dass man selbst allzu viel implementieren muss.
|
|
Lossy eX
      
Beiträge: 1048
Erhaltene Danke: 4
|
Verfasst: Do 23.03.06 17:29
Ah. Das hast du dann wohl.  Macht ja nichts.
Also in Delphi standardmäßig wird nur die GDI benutzt. Das über die Klasse TBitmap... Diese bietet dir aber weder echte Transparenzen (Semitransparenz nein, Alphamaskung ja) noch Rotationen. Das müsstet ihr dann alles selber implementieren. Allerdings solltet ihr euch überlegen ob es nicht sinnvoller wäre etwas anderes zu benutzen. Die GDI ist leider schon sehr alt und deswegen nicht das Schnellste und Beste was man tun kann. Ehrlich gesagt ist die reine GDI wirklich nur für Oberflächen anzuraten, weil es keine andere wahl gibt. Zu allem was umfangreicher ist wohl eher nicht.
Was habt ihr denn Grafisch überhaupt vor? Fragen wir mal in die andere Richtung. Evtl habt ihr gar keine andere Wahl als etwas Anderes zu benutzen. Je nachdem kann es sogar ratsam sein selber eine "Grafikschnittstelle" zu implementieren.
_________________ Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
|
|
_Marius 
Hält's aus hier
Beiträge: 10
|
Verfasst: Do 23.03.06 18:27
Also eine eigene Grafikschnittstelle zu implementieren würde warscheinlich den zeitlichen Rahmen sprengen. Außerdem hat der Rest des Teams noch nicht wirklich viel Erfahrung vom Programmieren.
Wir wollen eigentlich ein besseres Paint implementieren, deshalb reichen die TBitmap und die Alphamaskung warscheinlich erst einmal aus. Gibt es allerdings eine Möglichkeit ohne .NET auf das GDI+ zuzugreifen bzw. was für alternativen zum GDI(+) gibt es, die nicht allzu komplex sind?
|
|
Stoney
      
Beiträge: 122
Mac OS X 10.6 "Snow Leopard", Ubuntu Linux 9.04, Mandriva 2010, Win 7, Win Vista, Win XP
Object Pascal (Turbo Delphi, FPC 2.2.4, Lazarus), C++ (Code::Blocks, XCode), Java (Eclipse)
|
Verfasst: Do 23.03.06 18:48
_Marius hat folgendes geschrieben: |
Gibt es allerdings eine Möglichkeit ohne .NET auf das GDI+ zuzugreifen [...] |
Ja, die gibt es. Das .Net-Framework muss natürlich installiert sein bzw. die GDIPLUS.DLL auf dem Rechner vorhanden sein (im Windows-Ordner oder Pfad der Anwendung).
Klick: GDI+ Für Delphi 5/6
|
|
Aya
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: Do 23.03.06 19:28
Hi,
_Marius hat folgendes geschrieben: | Also eine eigene Grafikschnittstelle zu implementieren würde warscheinlich den zeitlichen Rahmen sprengen. Außerdem hat der Rest des Teams noch nicht wirklich viel Erfahrung vom Programmieren.
Wir wollen eigentlich ein besseres Paint implementieren, deshalb reichen die TBitmap und die Alphamaskung warscheinlich erst einmal aus. Gibt es allerdings eine Möglichkeit ohne .NET auf das GDI+ zuzugreifen bzw. was für alternativen zum GDI(+) gibt es, die nicht allzu komplex sind? |
also für ein Paint reicht die normale GDI allemal vollkommen aus... Ich hab vor ewigkeiten mal eine art PaintShopPro gebastelt.. konnte alle standardfunktionen von PSP und hat sogar Layer unterstützt.. und das ganze lief komplett nur mit standard TBitmaps  (Ok, bei mehr als 2 Layern war es nichtmehr echtzeit = man musste kurz warten.. aber das ist halt GDI :p )
Von daher denke ich ist die GDI wunderbar geeignet zum lernen.. gerade für die bei euch die noch nicht so viel erfahrung haben.
Au'revoir,
Aya~
PS: Heute würde ich sowas zwar mit 99%iger Sicherheit mit OpenGL machen, aber das ist gerade für Programmieranfänger wohl ein wenig hart.. (zumal OpenGL für ein 0815 Paint total übertrieben ist eigentlich)
PPS: Was ihr nöch überlegen könnt ist die Graphics32 Library zu benutzen... Die beinhaltet ein TBitmap32.. funktioniert genauso wie das normale TBitmap, hat nur ein paar mehr funktionen (u.A. rotation) und ist wesentlich schneller  (Kann sein das das ding auf GDI+ basiert.. weiß nichtmehr genau)
_________________ Aya
I aim for my endless dreams and I know they will come true!
|
|
Phantom1
      
Beiträge: 390
|
Verfasst: Do 23.03.06 20:12
Ich stimme Aya voll zu, probiert mal die Graphics32 Libary aus, die kann echt vieles zb: Layer, Transparenz, Rotation, Resizing/Skalierung, usw...
mfg
|
|
_Marius 
Hält's aus hier
Beiträge: 10
|
Verfasst: Do 23.03.06 21:01
Hallo zusammen!
Erstmal danke für eure Antworten!
Das GDI+ für Delphi 5/6 hab ich mir mal angeschaut, ist aber ziehmlich sicher zu komplex für den Rest des Teams.
Eigentlich sollte schon die GDI ausreichen, wir wollen aber noch kleine nützliche Dinge wie eben die Transparenz, die Möglichkeit Selektionen zu strecken oder zu drehen und eventuell noch ein paar Effekte implementieren, und das kann GDI nicht oder nur schlecht.
Die Graphics32 Library hört sich interessant an. Ist die standardmäßig bei Delphi dabei oder muss ich mir die irgendwo runterladen?
|
|
Stoney
      
Beiträge: 122
Mac OS X 10.6 "Snow Leopard", Ubuntu Linux 9.04, Mandriva 2010, Win 7, Win Vista, Win XP
Object Pascal (Turbo Delphi, FPC 2.2.4, Lazarus), C++ (Code::Blocks, XCode), Java (Eclipse)
|
Verfasst: Do 23.03.06 21:12
_Marius hat folgendes geschrieben: |
Die Graphics32 Library hört sich interessant an. Ist die standardmäßig bei Delphi dabei oder muss ich mir die irgendwo runterladen? |
Nein, die sind nicht standardmäßig dabei, die gibt es aber hier zu downloaden: Graphics32
Graphics32 basiert so weit ich weiß auf der "normalen" GDI, und nicht wie vermutet wurde auf GDI+ oder DirectX.
|
|
Lossy eX
      
Beiträge: 1048
Erhaltene Danke: 4
|
Verfasst: Fr 24.03.06 10:43
Die Graphics32 macht fast alles selber. Und dann mit spezialisierten Algorythmen und vieles sehr low levelig. Wenn du aber mit der reinen GDI und hardwarebeschleunigten Bitmaps arbeitest, dann hängst du die Graphics32 locker ab. Man muss nur wissen wie.
Bei einem TBitmap gibt es einen HandleType. Sobald man eine Pixelformat zugewiesen hat steht dieser auf bmDIB also Geräteunabhängiges Format. Man kann den aber auch bmDDB stellen damit ist er geräteabhängig. Und wenn man dieses Bitmap dann zeichnet, dann ist das je nach Hardware um den Faktor 10-100 schneller. Da kann die Graphics32 nur noch dumm aus der Wäsche schauen.  Man kann dann allerdings nicht mehr direkt auf die Daten zugreifen.
Aber sonst stimmt das schon. Die Graphics32 bietet einiges was man auch aus einem GrafikProgramm her kennt. Aber ich befürchte, dass ihr an einigen Stellen früher oder später arge Geschwindigkeitsprobleme bekommen werdet, da die Graphics32 nun mal sehr allgemein gehalten ist. Also sie muss in alle Richtungen optimiert werden und nicht nur für genau das was ihr braucht. Und in der Regel sind solche generell gehaltenen Bibliotheken nicht so das Ultimo was man was an Geschwindigkeit bekommen kann. Aber ihr habt ja auch noch nicht wirklich viel Ahnung. Von daher ist wohl das Erfolgserlebniss auch wichtiger. 
_________________ Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
|
|
_Marius 
Hält's aus hier
Beiträge: 10
|
Verfasst: Fr 24.03.06 15:21
Die Graphics32-Bibliothek ist ja echt gigantisch! Mit der wird es kein Problem unsere Pläne in die Tat umzusetzen.
Vielen Dank für eure Antworten!
Grüße
Marius
|
|