フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: [1]
トピック: TAcceleratedPaintBox
DEKO
管理者
投稿数: 2644
TAcceleratedPaintBox
on: 2015/09/17 22:06 Thu

VCL に TImage とか TPaintBox ってあるじゃないですか?あれって未だに GDI 描画なので、ジャギったり画像を拡大/縮小すると汚くなりますよね?で、DocWiki には代替の TCustomAcceleratedPaintBox ってのが掲載されているのですが、とても断片的な訳です。

[Direct2D キャンバスの使用]
http://docwiki.embarcadero.com/RADStudio/XE8/ja/Direct2D_%E3%82%AD%E3%83%A3%E3%83%B3%E3%83%90%E3%82%B9%E3%81%AE%E4%BD%BF%E7%94%A8

…最初からコンポーネントで提供してくれたっていいのに。そこでコンポーネントにしてみました。

[Vcl.D2DControls]
http://ht-deko.com/software/D2DControls_101.zip


 

 
上が Direct2D での描画で下が GDI での描画です。コンポーネントの使い方は簡単で OnPaint イベントハンドラで描画するだけです。

uses
..., Vcl.Direct2D;

...

procedure TForm1.AcceleratedPaintBox1Paint(Sender: TObject);
begin
if (Sender as TAcceleratedPaintBox).Accelerated then
begin
// Direct2D での描画
with (Sender as TAcceleratedPaintBox).D2DCanvas do
begin
Brush.Color := clWhite;
FillRect(Rect(0, 0, ClientWidth, ClientHeight));
Pen.Color := clBlack;
MoveTo(0, 0);
LineTo(ClientWidth, ClientHeight);
end;
end
else
begin
// GDI での描画
with (Sender as TAcceleratedPaintBox).GDICanvas do
begin
Brush.Color := clWhite;
FillRect(Rect(0, 0, ClientWidth, ClientHeight));
Pen.Color := clBlack;
MoveTo(0, 0);
LineTo(ClientWidth, ClientHeight);
end;
end;
end;

 
こんな感じで。Direct2D を使うかどうか (使えるかどうか) は Accelerated プロパティで設定 / 取得できます。

DEKO
管理者
投稿数: 2644
Re: TAcceleratedPaintBox
on: 2015/09/18 19:10 Fri

[Direct2D (Microsoft)]
https://msdn.microsoft.com/ja-jp/library/windows/desktop/dd370990%28v=vs.85%29.aspx

[194_線の端点形状の変更と Direct2D (Mr.XRAY])
http://mrxray.on.coocan.jp/Delphi/plSamples/194_Direct2DBasic.htm

[Direct2D (1)~(9) (AFsoft)]
http://afsoft.jp/program/del2010/p11_113.html
http://afsoft.jp/program/del2010/p11_114.html
http://afsoft.jp/program/del2010/p11_115.html
http://afsoft.jp/program/del2010/p11_116.html
http://afsoft.jp/program/del2010/p11_117.html
http://afsoft.jp/program/del2010/p11_118.html
http://afsoft.jp/program/del2010/p11_119.html
http://afsoft.jp/program/del2010/p11_120.html
http://afsoft.jp/program/del2010/p11_121.html

ページ: [1]
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.03 sec.