いつもお世話になります
Imageを使って白地の作図領域を作ろうとしています(Delphi6 Win2000です)
with Image1 do
begin
Width:=Width*2;
Height:=height*2;
Canvas.Brush.Style:=bsSolid;
Canvas.Brush.Color:=clWhite;
Canvas.FillRect(rect(0,0,Width,Height));
end;
のようにサイズを変更したいのですが、一定の大きさ以上に表示されません。
何が原因なのでしょうか?
ちなみに
FormのAutoScrollをTrueにするとスクロールバーが現れるのでサイズ自体は大きくなっているようです
デザイン時(起動時)の大きさによって表示限界は比例しています。
StretchをTrueにすれば大きく表示しますが、座標値が変化するので有効に出来ません
一定とはいくつでしょうか。
4Mpixelであれば、
http://www.users.gr.jp/ml/archive/delphi/39134.asp
と同じ原因ですね。
TBitmapだけであれば、
http://www.asahi-net.or.jp/~HA3T-NKMR/DGS/
のコンポーネントを使って回避できると思います。
TImageの代替コンポーネントはなさそうです。
にしのさま いつも有難うございます
問題点を上手く表現できなかったので、書きなおします
例えば、起動直後に
Image1.Width:=50;
Image1.Height:=50;
Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height);
と実行して 次に
Image1.Width:=100;
Image1.Height:=100;
Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height);
としても
最初に実行した50x50以上に表示出来ません。
image1.Picture.LoadFromFile()を実行すればそのサイズで表示できるのですが
単純に白地Canvasを作りたいだけなのです。
多分こうしたいのではないですか?
procedure TForm1.Button1Click(Sender: TObject);
var Image_A : TBitMap ;
begin
Image_A := TBitMap.Create ;
Image_A.Height := Image1.Height ;
Image_A.Width := Image1.Width ;
Image_A.Canvas.Brush.Color:=clWhite;
Image_A.Canvas.FillRect(Rect(0,0,Image_A.Width,Image_A.Height));
Image1.Picture.BitMap := Image_A;
Image1.Width:= Image1.Width*2;
Image1.Height:= Image1.height*2;
Image_A.Free;
end;
これで、縦横二倍ずつ大きくなる白地を作れました
>最初に実行した50x50以上に表示出来ません。
フッフッフッ(‾〜-‾)、それは TImage のタタリじゃな。
TImageは暗黙にTBitmapを背後霊として抱えておるのじゃ。
TImageの大きさを変えたければ、その背後霊にお供物を供えて
お願いせねばならぬ。
お供物としては、メモリ煎餅などが良かろう。
procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Width := 50;
Image1.Height := 50;
Image1.Canvas.Rectangle(0, 0, Image1.Width, Image1.Height);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
with Image1 do begin
Picture.Bitmap.Width := Width * 2;
Picture.Bitmap.Height := Height * 2;
Width := Picture.Bitmap.Width;
Height := Picture.Bitmap.Height;
Canvas.Brush.Style := bsSolid;
Canvas.Brush.Color := clWhite;
Canvas.FillRect(rect(0, 0, Width, Height));
Canvas.Brush.Color := clRed;
Canvas.Brush.Style := bsDiagCross;
Canvas.Ellipse(0, 0, Width, Height);
end;
end;
あきおさん、メモリ煎餅さん 有難うございます
とにかく、Pictureの実体を操作しなければいけないのですね
今回の場合は、Imageは見えなくても良いので
Img:=TBitmap.Create;
Img.Width:=xxxx;
Img.Height:=xxxxx;
として操作しています。
そこで新たな質問なのですが、サイズ指定で大きな値を入れるとエラーになるため
TryとRepeatで確保できる最大サイズを検査しています。
同じ環境でも、その時によって一定では無いようです
使用できる最大サイズを事前に知ることは出来ないでしょうか?
ツイート | ![]() |