Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Image rotieren lassen und die breite ändern (https://www.delphipraxis.net/120657-image-rotieren-lassen-und-die-breite-aendern.html)

Christian18 14. Sep 2008 18:43


Image rotieren lassen und die breite ändern
 
Hallo,

ich lasse ein Image auf meiner Form rotieren. Das mache ich so:

Delphi-Quellcode:
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 größten Punkt x befindet, dass soll die Image breite 0 sein.
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

Christian18 15. Sep 2008 16:11

Re: Image rotieren lassen und die breite ändern
 
push

jfheins 15. Sep 2008 16:32

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:

Image1.Width = orginalbreite * sin(Winkel) * sin(Winkel);
// bzw.
Image1.Width = orginalbreite * 0.5 * (1 + sin(Winkel));
Wenn ich dich richtig verstanden habe :gruebel:


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