1

良い一日。ビットマップ イメージを操作する 2 つの関数を組み込みたいと考えました。同じ画像を回転および拡大縮小したかったのです。私がしたことは、与えられた例の 1 つである TRotLayer を使用することでした。私の計画は、TRotLayer を変更することでした。これが私がしたことです。

TCustomAffineLayer = class(TBitmapLayer)
private
FAlphaHit: Boolean;
FTransformation: TAffineTransformation;
FBitmap: TBitmap32;
procedure BitmapChanged(Sender: TObject);
procedure SetBitmap(Value: TBitmap32);
protected
FBitmapCenter: TFloatPoint;
procedure AdjustTransformation; virtual;
function DoHitTest(X, Y: Integer): Boolean; override;
procedure Paint(Buffer: TBitmap32); override;
property Transformation: TAffineTransformation read FTransformation;
public
constructor Create(ALayerCollection: TLayerCollection); override;
destructor Destroy; override;
property AlphaHit: Boolean read FAlphaHit write FAlphaHit;
property Bitmap: TBitmap32 read FBitmap write SetBitmap;
end;

TRotLayer = class(TCustomAffineLayer)
private
FPosition: TFloatPoint;
FScaled: Boolean;
FAngle: Single;
procedure SetAngle(Value: Single);
procedure SetPosition(const Value: TFloatPoint);
procedure SetScaled(Value: Boolean);
procedure SetBitmapCenter(const Value: TFloatPoint);
protected
procedure AdjustTransformation; override;
public
property Angle: Single read FAngle write SetAngle;
property BitmapCenter: TFloatPoint read FBitmapCenter write SetBitmapCenter;
property Scaled: Boolean read FScaled write SetScaled;
property Position: TFloatPoint read FPosition write SetPosition;
end;

最初の行で、TCustomLayer を TBitmapLayer に変更して、TBitmapLayer の Location プロパティを使用して画像のサイズ変更とスケーリングを行えるようにしました。しかし、スケーリング部分のコーディングを開始したとき、Location プロパティを使用して機能させることができなかったようです。これがコードです。

Selected := TRotLayer(ImgView.Layers.Items[i]);
frNewLoc := Selected.Location;

**altered the frNewLoc values (Left,Right,Top,Bottom) here**

Selected.Location := frNewLoc;

うまくいきませんでした。どこで私は間違えましたか?または、スケーリングと回転のプロパティをすべて 1 つに持つコンポーネントはありますか? あなたの助けを楽しみにしています。前もって感謝します。

Delphi初心者はこちら... :)

4

0 に答える 0