Image rotieren lassen und die breite ändern
Hallo,
ich lasse ein Image auf meiner Form rotieren. Das mache ich so:
Delphi-Quellcode:
Wenn das Image sich am größten Punkt x befindet, dass soll die Image breite 0 sein.
procedure TForm1.FormCreate(Sender: TObject);
var wx, wy: Real; begin DoubleBuffered:=True; Winkel:=0; // Radius berechnen wx:=(ClientWidth / 2) - Image1.Width; wy:=(ClientHeight / 2) - Image1.Height; Image1.Left:=Round((Cos(Winkel) * wx) + ClientWidth / 2 - (Image1.Width / 2)); Image1.Top:=Round((Sin(Winkel) * wy) + ClientHeight / 2 - (Image1.Height / 2)); end; procedure TForm1.Timer1Timer(Sender: TObject); var wx, wy: Real; k:integer; begin Winkel:=Winkel - 0.005; // Radius berechnen wx:=(ClientWidth / 2) - Image1.Width; wy:=(ClientHeight / 2) - Image1.Height; Image1.Left:=Round((Cos(Winkel) * wx) + ClientWidth / 2 - (Image1.Width / 2)); Image1.Top:=Round((Sin(Winkel) * wy) + ClientHeight / 2 - (Image1.Height / 2)); end; Wenn das Image sich am niedrigsten Punkt x befindet, dann soll die Image breite auch 0 sein. Wenn das Image sich am größen Punkt y befindet, dann soll das Image die volle breite haben. Also aus der original datei. Wenn sich das Image am niedrigsten Punkt y befindet, dann soll es auch die volle breite haben. Wie kann ich das machen? MFG Christian18 |
Re: Image rotieren lassen und die breite ändern
push
|
Re: Image rotieren lassen und die breite ändern
Also .. du bewegst es bereits auf der Form, das schent zu funktionieren - oder? :)
Die Breite ändern in abhängigkeit des winkels... Du must dir vorher die rginale Bildhöhe speichern, dann müsste es so ungefähr gehen:
Delphi-Quellcode:
Wenn ich dich richtig verstanden habe :gruebel:Image1.Width = orginalbreite * sin(Winkel) * sin(Winkel); // bzw. Image1.Width = orginalbreite * 0.5 * (1 + sin(Winkel)); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:40 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