名前 題名 ▼ 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. > > GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link