请大家帮忙分析哪里出了毛病,关于TBitmap在内存中建立的问题.(100分)

  • 主题发起人 主题发起人 yxmermxy
  • 开始时间 开始时间
Y

yxmermxy

Unregistered / Unconfirmed
GUEST, unregistred user!
这么简单的几行也会出错,如何建立大的TBitmap,100分相送!!!!!!!!
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var bitmap1 :TBitmap;
begin
bitmap1 := Graphics.TBitmap.Create;
bitmap1.Width:=10000;
bitmap1.Height:=10000;
bitmap1.Canvas.Brush.Color:=clblack;

end;

end.
 
bitmap1 := Graphics.TBitmap.Create;//这个Graphics不用加吧?
bitmap1.Width:=10000;
bitmap1.Height:=10000;
bitmap1.Canvas.Brush.Color:=clblack;

 
Uses Buttons;
 
bitmap1.Width:=10000; >>>1000
bitmap1.Height:=10000; >>>>1000

太大了。

 
是不是内存不够?!
bitmap1.Width:=10000;
bitmap1.Height:=10000;
你可真是大方,一来就要10000*10000,吓死人。
我的机器512M内存,128M显存。开10000*4000都完蛋,你的配置是什么?
难道想4G内存?1G显存?
 
想直接开巨大的TBitmap,不行,起码我还没有找到方法。
我跟你一样,想开一个巨大的Bitmap,发现限制太大,只能间接的开。
你开这么大的图做什么用?
 
我512M 只能开10000X3000.....
用DirectX开吧 很多游戏的地图都大于10000X10000

给一个DelphiX下的例子 DelphiX很多 到处都能下
uses DIB
procedure TForm1.Button1Click(Sender: TObject);
Var DXDIB1: TDXDIB;
begin
DXDIB1:=TDXDIB.Create(nil);
DXDIB1.DIB.Width:=10000;
DXDIB1.DIB.Height:=10000;
DXDIB1.Free;
End;

DXDIB和TBitMap基本上一样 也是一个图片容器控件 也有Canvans属性 用起来很方便
要显示出来的话就用DelphiX下的DXDraw吧。。控件包里带例子。。。
 
TO GenL:
如果100000*1000的大小可以吗?实时用Canvas绘图可以响应?
谢谢
 
我倒是知道100000*1000的大小是否可以,不过...
 
多人接受答案了。
 
后退
顶部