久しぶりに質問をさせていただきます。
イメージを黒く塗りつぶそうと思い、Brushプロパティを使ったところ、
どういう訳か真っ白く表示されてしまいました。
BitbltでBRACKNESSにしないと真っ黒表示にはできないんでしょうか?
Image1.Canvas.Brush.Style := bsSolid;
Image1.Canvas.Brush.Color := clBlack;
とした後に、OnPaintでBitbltしたのですが、だめでした。
いろいろやり方はあるでしょうけど,例えば
procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Canvas.Brush.Style := bsSolid;
Image1.Canvas.Brush.Color := clBlack;
Image1.Canvas.FillRect(Image1.ClientRect);
end;
な感じではないでしょうか.
TImage は画像を保持しますから Mr.XRAY さんのコードのように
ただ描くだけで、再描画します。BitBlt() は全く関係ありません。
なるほど。Mr.XRAYさん、jokさん回答ありがとうございます。
>TImage は画像を保持しますから
もしTImageではなくTbitmapだった場合にはBitbltしないといけないのでしょうか?
> もしTImageではなくTbitmapだった場合にはBitbltしないといけないのでしょうか?
そうですね。TBitmap は画像そのものですから、表示するためにはどこかの
Canvas に描画する必要があります。普通は BitBlt() のような API を使うの
ではなく、TCanvas の Draw() StretchDraw() CopyRect() などのメソッドを
使って描画します。
無事解決しました。
CopyRectで短径領域をコピーして描画すればたいていのことはできそうですね。
ありがとうございました。
ツイート | ![]() |