Radiobuttonで何種類かの画像描画スタイルを選択して描画させるソフトを作っています。 ボタンを押せば(OnClickで)選択した画像は描画されますがボタンの表示は描画が終わるまで黒くなりません。(描画に10秒程度掛かる) ボタンを押したら短時間で黒く表示するようにする方法があったら教えてください。DelphiはXE3です。
ソースがないのでクリックイベント内でどうやって描画させているのかわかりませんが
10秒もかかるのであれば、描画更新イベントか何かが何度も発生してしまっているかもしれません
描画中にフラグ立てて、描画中によばれたら処理しないとかすると変わりませんか?
ボタンの描画は適当 (青と赤)
TRadioButton = class(vcl.StdCtrls.TRadioButton)
private
ControlCanvas: TControlCanvas;
FCanvas: TCanvas;
procedure WM_PAINT(var TWMPAINT); message WM_PAINT;
protected
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property Canvas: TCanvas read FCanvas;
end;
constructor TRadioButton.Create(AOwner: TComponent);
begin
inherited;
FCanvas := TControlCanvas.Create;
TControlCanvas(FCanvas).Control := Self;
end;
destructor TRadioButton.Destroy;
begin
FreeAndNil(FCanvas);
inherited;
end;
procedure TRadioButton.WM_PAINT(var TWMPAINT);
begin
inherited;
Canvas.Brush.Style := bsSolid;
Canvas.Brush.Color := clBtnFace;
Canvas.FillRect(Rect(0,0,Width,Height));
if Checked = True then
begin
Canvas.Brush.Color := clRed;
Canvas.FillRect(Rect(0,0,Height,Height));
end
else
begin
Canvas.Brush.Color := clBlue;
Canvas.FillRect(Rect(0,0,Height,Height));
end;
Canvas.Brush.Style := bsClear;
Canvas.TextOut(Height,0,Caption);
end;
ツイート | ![]() |