イメージを塗りつぶすには?

解決


太郎衛門  2004-02-26 07:19:30  No: 7368

久しぶりに質問をさせていただきます。
イメージを黒く塗りつぶそうと思い、Brushプロパティを使ったところ、
どういう訳か真っ白く表示されてしまいました。
BitbltでBRACKNESSにしないと真っ黒表示にはできないんでしょうか?

  Image1.Canvas.Brush.Style := bsSolid;
  Image1.Canvas.Brush.Color :=  clBlack;

とした後に、OnPaintでBitbltしたのですが、だめでした。


Mr.XRAY  URL  2004-02-26 08:15:19  No: 7369

いろいろやり方はあるでしょうけど,例えば

procedure TForm1.Button1Click(Sender: TObject);
begin
     Image1.Canvas.Brush.Style := bsSolid;
     Image1.Canvas.Brush.Color :=  clBlack;
     Image1.Canvas.FillRect(Image1.ClientRect);
end;

な感じではないでしょうか.


jok  2004-02-26 08:28:19  No: 7370

TImage は画像を保持しますから Mr.XRAY さんのコードのように
ただ描くだけで、再描画します。BitBlt() は全く関係ありません。


太郎衛門  2004-02-26 21:39:13  No: 7371

なるほど。Mr.XRAYさん、jokさん回答ありがとうございます。
>TImage は画像を保持しますから 
もしTImageではなくTbitmapだった場合にはBitbltしないといけないのでしょうか?


jok  2004-02-26 22:17:38  No: 7372

> もしTImageではなくTbitmapだった場合にはBitbltしないといけないのでしょうか?

そうですね。TBitmap は画像そのものですから、表示するためにはどこかの
Canvas に描画する必要があります。普通は  BitBlt() のような API を使うの
ではなく、TCanvas の Draw() StretchDraw() CopyRect() などのメソッドを
使って描画します。


太郎衛門  2004-02-27 08:30:40  No: 7373

無事解決しました。
CopyRectで短径領域をコピーして描画すればたいていのことはできそうですね。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加