2012/10/23 (火) 20:30:25 Mr.XRAY |
確かに「列」の左が少し欠けていますね.
これ,多分フォントの問題のようですね.
http://mrxray.on.coocan.jp/Delphi/plSamples/172_MetaFile_BasicTest.htm#fig3
当方も Windows XP(SP3) ですが発生していなようですので,
Windows のアップデートの内容によるのかも知れません.
>> (2) 回転などの機能はない
>回転は欲しいです
これは,移動リサイズコンポとは別に作成しなければならないので
パスですね (^^; スんません.
>意味がよく理解できないのですが、規則にそったコンポーネントを
>作成すれば、線や○を追加できるということでしょうか。
です.例えば角が丸い四角形は以下のようになっています.
変数類の説明は省略します.
DrawRoutine というメソッドをオーバーライドした描画コードを作成する
ことになります.
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
plDragResize, Menus, Math;
type
TplResizeRoundRect = class(TplResizeBaseControl)
private
FRoundSize : Integer;
public
constructor Create(AOwner: TComponent); override;
procedure DrawRoutine(ACanvas: TCanvas; OffSetX: Integer=0;
OffSetY: Integer=0); override;
published
property RoundSize : Integer read FRoundSize write FRoundSize;
end;
{ TplResizeRoundRect }
//-----------------------------------------------------------------------------
// Create処理
// 角の丸部分のサイズの初期値を設定
//-----------------------------------------------------------------------------
constructor TplResizeRoundRect.Create(AOwner: TComponent);
begin
inherited;
FRoundSize := 35;
end;
//-----------------------------------------------------------------------------
// 実際の描画処理を実行するDrawRoutineメソッド
// Signの使用には,usesにMathが必要
//-----------------------------------------------------------------------------
procedure TplResizeRoundRect.DrawRoutine(ACanvas: TCanvas; OffSetX: Integer=0;
OffSetY: Integer=0);
var
ARect : TRect;
ALeft : Integer;
ATop : Integer;
AWidth : Integer;
AHeight : Integer;
begin
inherited;
OffSetX := Sign(Width) * OffSetX;
OffSetY := Sign(Height) * OffSetY;
ARect := ClientRect;
OffsetRect(ARect, OffSetX, OffSetY);
ACanvas.Pen := Pen;
ACanvas.Brush := Brush;
ALeft := Pen.Width div 2 + OffSetX;
ATop := Pen.Width div 2 + OffSetY;
AWidth := Width - Pen.Width + 1;
AHeight := Height - Pen.Width + 1;
if Pen.Width = 0 then begin
Dec(AWidth);
Dec(AHeight);
end;
ACanvas.RoundRect(ALeft, ATop, ALeft + AWidth, ATop + AHeight,
FRoundSize, FRoundSize);
end;
end.
|
|