過去の質問確認して、似ているのが何個かありましたが解決にいたれなかったので質問です。
現在FormにPanelが1つあり、その中にImageをつけています。
そのImageで
Image1.Canvas.Rectangleを行い四角を描画すると、白の背景に四角が描画
されます。
過去ログを見て、
with Image1 do begin
Transparent:=True;
Canvas.Brush.Style :=bsClear;
Canvas.Brush.Color :=clWhite;
end;
を追記してみたのですが、単に四角形の中だけが透過された状態で、
四角形の外側は背景白のままです。
やりたいことは四角で書いた部分の線以外のImage1を全て透明としたいのですが、方法ありますか?
Image1.Canvas.Brush.Color := clFuchsia;
Image1.Picture.Bitmap.TransparentColor := clFuchsia;
Image1.Canvas.FillRect(Image1.ClientRect);
とした上でRectangleを行えば、お望みの動作が得られると思います。
やってることを簡単に説明すれば、
透過色を設定し、その透過色であらかじめ全体を塗りつぶしているだけです。
しんさん
ありがとうございます。
実際にやってみましたが、
> Image1.Canvas.FillRect(Image1.ClientRect);
だけが効いているみたいで、これだけのコードで、四角は透明な上に描画されます。(ただ固定位置からMouseDownした位置までの四角)
ただ、そのあとRectangleで指定位置に四角を書きたいのですが、これは書くことができず、
また実際
> Image1.Canvas.Brush.Color := clFuchsia;
> Image1.Picture.Bitmap.TransparentColor := clFuchsia;
はあってもなくても結果は同じになります。
Rectangleではなく
LineToで四角を描画してみては?
アドバイスありがとうございます。
すいません!
できました。
Image1.Canvas.FillRect(Image1.ClientRect);
のあとに
Image1.Picture := nil;
をやってしまっていたのが、原因でした。
Image1.Picture := nil;
Image1.Canvas.FillRect(Image1.ClientRect);
のあとRectangleをやることで思い通りの結果得られました。
ありがとうございます。
ツイート |