Bild drehen mit Graphics32 und / oder GDI+
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe mal wider ne Stelle, an der ich nicht weiterkomme. Wahrscheinlich finde ich in den nächsten 15 min die Lösung, aber trotzdem suche ich eure Hilfe. Ich benutzte zur zeit diese (auch die einzige funktionierende die ich gefunden habe) Procedure die ich im Forum hier gefunen habe:
Delphi-Quellcode:
Jedoch entstehen dabei unschöne ränder bei 90° 180° 270° entstehen. Siehe bild:
procedure Rotate(const Src: TBitmap32; const Dst: tBitmap32; Angle: Single; x,y: integer);
var SrcR: Integer; SrcB: Integer; T: TAffineTransformation; Sx, Sy, Scale: Single; begin SrcR := Src.Width - 1; SrcB := Src.Height - 1; T := TAffineTransformation.Create; T.SrcRect := FloatRect(0, 0, SrcR +1, SrcB + 1); try // shift the origin T.Clear; // move the origin to a center for scaling and rotation T.Translate(-SrcR / 2 , -SrcB / 2 ); T.Rotate(0, 0, Angle); // move the origin back T.Translate(SrcR / 2, SrcB / 2 ); // zu x und y bewegen T.Translate(x,y); // transform the bitmap Transform(Dst, Src, T); finally T.Free; end; end; http://www.delphipraxis.net/attachme...1&d=1313007044 Darum suche ich eine Lösung diese Problems oder eine andere Möglichkeit auch mit gdi+ falls nötig! MfG schlagzu |
AW: Bild drehen mit Graphics32 und / oder GDI+
Vielleicht sind das irgendwelche Rundungsfehler von Float auf Integer beim Teilen mit / z.B hier:
Code:
Warum wird hier 1 abgezogen?
T.Translate(-SrcR / 2 , -SrcB / 2 );
Code:
Was ist hiermit?
SrcR := Src.Width - 1;
http://graphics32.org/news/newsgroup...ticle_id=11397 |
AW: Bild drehen mit Graphics32 und / oder GDI+
Zitat:
Ansonsten: Hat dein Bitmap gerade oder ungerade Ausmaße? Wie verhält sich das mit einem Bitmap je ein Pixel höher und breiter? Und: Ist das Bitmap wirklich exakt quadratisch? |
AW: Bild drehen mit Graphics32 und / oder GDI+
Liste der Anhänge anzeigen (Anzahl: 3)
Zitat:
Also ich habe folgende Möglichkeiten mit folgenden Ergebnissen: 1: [SIZE="8"]
Delphi-Quellcode:
[/SIZE]
SrcR := Src.Width;
SrcB := Src.Height; T := TAffineTransformation.Create; T.SrcRect := FloatRect(0, 0, SrcR +1, SrcB + 1); http://www.delphipraxis.net/attachme...1&d=1313072297 2: [SIZE="8"]
Delphi-Quellcode:
[/SIZE]
SrcR := Src.Width;
SrcB := Src.Height; T := TAffineTransformation.Create; T.SrcRect := FloatRect(0, 0, SrcR, SrcB); http://www.delphipraxis.net/attachme...1&d=1313072540 3:
Delphi-Quellcode:
http://www.delphipraxis.net/attachme...1&d=1313071853
[SIZE="8"] SrcR := Src.Width -1;
SrcB := Src.Height -1; T := TAffineTransformation.Create; T.SrcRect := FloatRect(0, 0, SrcR, SrcB);[/SIZE] Das erste Bild war 100x100 Px groß das jetzige ist 101x101 (hat aber keine Auswirkung, habe jede Änderung auch mit 100x100 probiert). Danke für die Hilfe, vllt könnte nochmal jemand sich diesem Problem annehmen. MfG schlagzu |
AW: Bild drehen mit Graphics32 und / oder GDI+
hmm wenn ich den Source richtig interpretiere...
bei 100x100 ist der Ratotionspunkt um 1 verschoben bei 101x101 tritt beim verschieben des Bildes ein Rundungsfehler auf (um 1 versetzt) |
AW: Bild drehen mit Graphics32 und / oder GDI+
Gibt es dafür eine Lösung?
|
AW: Bild drehen mit Graphics32 und / oder GDI+
Schlag mal hier zu..
http://www.delphipraxis.net/130998-a...-rotation.html Und ohne Antialias wird das definitiv nichts mit deinen Kanten. gruss |
AW: Bild drehen mit Graphics32 und / oder GDI+
Zitat:
Du musst dazu einfach nur die unit GR32_Resamplers einbinden, da finden sich alle möglichen Kernel. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:55 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