ImageとButtonをFormに貼り付けて、Buttonのイベントに以下のコードを記入し実行すると、Image部分が白く反転してしまいます。
procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Height := 105;
Image1.Width := 105;
Image1.Transparent := True;
Image1.Canvas.Pen.Color := clBlue;
Image1.Canvas.MoveTo(0, 0);
Image1.Canvas.LineTo(0, 105);
end;
但し
Image1.Canvas.LineTo(0, 104);
や
Image1.Canvas.LineTo(1, 105);
とすると、正常にラインが描画されます。
これはTImageコンポーネントの不具合又は仕様なのでしょうか?
使用OS
Winsows2000(SP4)
開発環境(両方で調査)
Trubo Delphi(Update2)
Delphi7 Pro
Image1.Canvas.MoveTo(0, 0);
Image1.Canvas.LineTo(0, 105);
Image1.Canvas.MoveTo(0, 0);
Image1.Canvas.LineTo(100, 100);
とやるとわかると思いますが、左下が透明色として扱われているため、青の線が見えなくなっているだけだと思います。
>にしのさん
回答ありがとう御座います。
記憶が曖昧ですが、確かTransparentModeだかに関わる所でしたよね、左下を透明色として扱うと言う仕様は?
只、Image部分が白く反転してしまうのは何故でしょうか?
今、複数のImageを重ねて、レイヤーの様に使用しているので、透明になって欲しいんです。
TransparentModeだかをFalseとかにする必要があるのでしょうか?
左下が透明色に指定されるので、
> 但し
> Image1.Canvas.LineTo(0, 104);
> や
> Image1.Canvas.LineTo(1, 105);
この場合には白が透明になります。
> Image1.Canvas.LineTo(0, 105);
この場合は、左下は青なので、青が透明(=白は表示される)になります。
透明色の指定と言うのはどのタイミングで変わるのでしょうか?
左下の色が変わる毎に変わってしまう物なのでしょうか?
> 透明色の指定と言うのはどのタイミングで変わるのでしょうか?
> 左下の色が変わる毎に変わってしまう物なのでしょうか?
TBitmapクラスのTransparentModeプロパティがtmAutoの場合は、左下の色で判断されます。左下の色が変われば、その色が透明色です。
tmFixedであれば、TransparentColorプロパティで指定された色が透明色となります。
TImageクラスには、Transparentプロパティはあっても、TransparentMode, TransparentColorはありません。
一度、TBitmapのオブジェクトを作ってからTImageのPictureプロパティに入れた方がよいと思います。
TBitmapオブジェクトを用意しないのであれば、Image1のPictureプロパティのBitmapプロパティが生成されていることを前提に、
Image1.Picture.Bitmap.PixelFormat := pf24bit;
Image1.Picture.Bitmap.TransparentColor := RGB(255,255,255);
Image1.Picture := Image1.Picture;
とでもしてやれば、白が透明色になります。
以下コードをButtonのイベントに貼り付けて実行し、背景が白色反転する事はなくなったのですが、今度はラインが表示されません。
透明色は白で、ラインは青なのに?
Image1.Picture.Bitmap.PixelFormat := pf24bit;
Image1.Picture.Bitmap.TransparentColor := RGB(255,255,255);
Image1.Picture := Image1.Picture;
Image1.Canvas.Pen.Color := clBlue;
Image1.Canvas.MoveTo(0, 0);
Image1.Canvas.LineTo(0, 105);
Image1.Canvas.Brush.Colorを、
Image1.Picture.Bitmap.TransparentColorと別の色に設定する事で上手く行きそうです。
にしのさん、有難う御座いました。
ツイート | ![]() |