Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bild um einen Bestimmten Winkel drehen (https://www.delphipraxis.net/52019-bild-um-einen-bestimmten-winkel-drehen.html)

nano 22. Aug 2005 20:43


Bild um einen Bestimmten Winkel drehen
 
Erstmal ein herzliches Hallo in diesem Forum, bin ein Neuling =)

Stehe seit Tagen vor einem entscheidendem Problem: Wie kann ich ein Bild (Bitmap) um einen Bestimmten Winkel drehen?

Ist es überhaupt möglich, dies zu schaffen ohne einzelne Pixelwerte abzufragen?

Bin für jeden Hinweis sehr dankbar!


ps: Es geht hierbei um ein Projekt für die erstellung symmetrischer Ornamente. Dazu brauche ich unbedingt Die Achsen und Punktspiegelungs, sowie die Drehung...

MrSpock 22. Aug 2005 20:57

Re: Bild um einen Bestimmten Winkel drehen
 
Hallo nano,

zunächst einmal herzlich willkommen im Delphi PRAXIS Forum.

Ich hatte vor einiger Zeit auch das Problem und habe es mit der TRotateImage Komponete, die du hier findest gelöst. Ist eine gute Komponente und Freeware.

Delphi-Freak 22. Aug 2005 21:06

Re: Bild um einen Bestimmten Winkel drehen
 
Ebenfalls HERZLICH WILLKOMMEN :party:

Oder falls du mehr machen willst (nicht nur drehen, auch z.B. Transparenz ...) verwende doch Graphics32

Edit: War von mir etwas kurz ausgedrückt :oops:
etwas genauer: Graphics 32 bietet eigene Komponenten als Ersatz für z.B. TImage. Damit kann man z.B. ein Bild über ein anderes legen, jedoch mit teilweise Transparenz (worauf ich mich zuerst beziehen wollte). Es werden auch Möglichkeiten geboten, um Bilder mit Filtern zu vergrößern bzw. zu verkleinern, wodurch man dann beim Vergrößern nicht die einzelnen Pixel erkennen kann. Diese Kompos bieten dann aber noch einige Funktionen mehr... wenn du willst oder Interesse hast, kannst du sie ja einmal ausprobieren.


LG, Delphi-Freak

Khabarakh 22. Aug 2005 21:10

Re: Bild um einen Bestimmten Winkel drehen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Vorneweg: Ohne einzelne Pixelmanipulation geht gar nichts.
Dann kommt es darauf an, um welche Winkel du drehen willst. Sollen es nur Vielfache von 90° sein, findest du sicher im Internet Prozeduren fürn ein normales TBitmap.
Sollen es auch andere Winkel sein, wird das Ganze schon schwieriger. Es ist sicher immer noch mit den Standardkomponenten von Delphi zu schaffen, allerdings wird das Bitmap danach nicht sehr schön aussehen, wenn du einfach jedem Pixel die Farbe des entsprechenden Pixels zuweist. Der nächster Schritt wäre, die Pixel auch mit Float-Koordinaten anzusprechen, damit ein Pixel, das nach der Drehung "zwischen den echten Pixeln landet", auf alle umgebenden im richtigen Verhältnis "abfärbt". Spätestens hier würde ich allerdings zur GR32-Lib greifen, die dies, große Performanceschübe, Alphatransparenz und vieles mehr bietet.
Ich hänge mal eine Demo-Echse der Library an (PixelFS = Floatkoordinaten).

[add]Ich bin zu langsam :mrgreen: . Aber das kann man trotzdem stehen lassen, denke ich. [/add]

Delphi-Freak 22. Aug 2005 21:15

Re: Bild um einen Bestimmten Winkel drehen
 
Dafür hast du's trotz meines Edits besser ausgedrückt und außerdem einen besseren Link :wink:

nano 23. Aug 2005 22:44

Re: Bild um einen Bestimmten Winkel drehen
 
vielen Dank für eure Tipps.. Hab heute graphics32 installiert, aber noch nicht getestet... Gibts da vielleicht noch deutsch onlinehilfe dazu?

danke!

Khabarakh 23. Aug 2005 22:58

Re: Bild um einen Bestimmten Winkel drehen
 
Nö :wink: .
Englisch gehört einfach zum Programmieren dazu, da geht (oft) kein Weg vorbei.

SirThornberry 23. Aug 2005 23:47

Re: Bild um einen Bestimmten Winkel drehen
 
dafür gibt es die Funktion PlgBlt

nano 24. Aug 2005 14:22

Re: Bild um einen Bestimmten Winkel drehen
 
versuche jetzt in meinem Proggie alle TImage Komponente durch TImage32 zu ersetzen.. Gleich ein Paar Fragen:

1. Wenn das Fenster minimiert oder durch ein anderes überdeckt wird, erlischt das Bild an dieser Stelle.. Wie kann man das vermeiden?

2. Wohin soll man am besten Zeichnen? Aufs Canvas oder Bitmap direkt?

3. Image32.Bitmap.LineTo verlangt nun nach einem neuen Parameter vom typ HDC, was ist das überhaupt? (OnlineHilfe hat mich nicht schlauer gemacht :-/)

danke!

Bitmap 26. Aug 2005 18:57

Re: Bild um einen Bestimmten Winkel drehen
 
Zitat:

1. Wenn das Fenster minimiert oder durch ein anderes überdeckt wird, erlischt das Bild an dieser Stelle.. Wie kann man das vermeiden?
Um das zu verhindern, sollten sämtliche Zeichenoperationen zum Event OnPaint (z.B. von TForm oder TPaintBox) erfolgen. Dieses wird bei einer Überdeckung, etc. aufgerufen. Windows kümmert sich darum, dass nur der überdeckte Bereich neu gezeichnet wird, so dass nicht das ganze Bild neu aufgebaut werden muss.

Zitat:

2. Wohin soll man am besten Zeichnen? Aufs Canvas oder Bitmap direkt?
Das kommt darauf an, was Du zeichnen möchtest. Ich verwende meistens ein TPaintBox Objekt um darin zu zeichnen.
Soweit ich das Verstehe, kannst Du immer nur auf Canvas zeichnen. Du kannst aber zwischen TForm.canvas und TBitmap.canvas auswählen. Bei TBitmap32 ist Canvas allerdings für den User transparent, d.h. Du kannst direkt MyBitmap.LineTo(X,Y) aufrufen.

Zitat:

3. Image32.Bitmap.LineTo verlangt nun nach einem neuen Parameter vom typ HDC, was ist das überhaupt? (OnlineHilfe hat mich nicht schlauer gemacht :-/)
Alle Möglichkeiten von LineTo haben bei mir immer nur die Parameter (X,Y:integer). HDC ist normalerweise ein Windows Handle wie es beim initieren von TBitmap erzeugt und zurückgegeben wird. Kann es sein, dass bei Dir dieser Schritt irgenwie nicht berücksichtig wurde?

Hoffe das hilft mal etwas weiter ... :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:49 Uhr.
Seite 1 von 4  1 23     Letzte »    

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