是不是TPicture的大小有限制??

windyday 2004-08-06 01:25:49
我本来想用TImage做个图的可是发现里面的TPicture大小有限制。超过了一定的大小就不行了。顺便想问一下TImage->Width和TImage->Picture->Width之间有什么关系??
...全文
117 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjy1001 2004-08-10
  • 打赏
  • 举报
回复
把Image定义得跟你的最大图片规格一样 假设为2048 * 1024
那么在窗体创建的时候加入如下代码:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Image1->Width = 2048;//第一次定义
Image1->Height = 1024;

BitBlt(Image1->Canvas->Handle, 0, 0, 2048, 1024, Handle, 0,0,0);
Image1->Refresh()
}

然后你就可以直接修改你的Image的大小了
如:
Image1->Width = 700;//需要时的修改
Image1->Height = 300;

但修改的数值不能超过你第一次定义的大小

Image的大小可以说是没有限制的
jiangchun_xn 2004-08-10
  • 打赏
  • 举报
回复
Image1->Picture->Bitmap->Width=newWidth;
Image1->Picture->Bitmap->Height=newHeight;
wcccc1 2004-08-10
  • 打赏
  • 举报
回复
顶一下,
windyday 2004-08-09
  • 打赏
  • 举报
回复
确实是设置问题。谢谢了
xiaoshi0 2004-08-09
  • 打赏
  • 举报
回复
我想你还是在属性的设置上出现了问题,应该不至于有“那么大”的图象,以至于显示不出来吧!
我来看看CB 2004-08-09
  • 打赏
  • 举报
回复
首先跟操作系统有关.
98图像最大的高宽可能为32766。
200/XP图像最大的高宽可能为大一些,具体记不住了。
windyday 2004-08-06
  • 打赏
  • 举报
回复
楼上的谢谢了。如果大图片应该怎么办呢?有什么特别的方法的?
cczlp 2004-08-06
  • 打赏
  • 举报
回复
Image->Width是控件的宽度,Image->Picture->Width是图像的宽度,基本上没什么关系。

我曾经用TImage装载过大图像,结果没有显示,不知到底能装多大图片,是不是与系统内存大小有关。
windyday 2004-08-06
  • 打赏
  • 举报
回复
或许有人不太清楚我问的。我想用TImage根据输入的数值大小输出定制图片。但是如果输入的数值过大。图片k将会不能正常的显示。(超出的部分被截掉了)。
关于绘图的源代码在下面。有点长。干作业的。不好意思^_^
void TForm1::draw(int i)
{

lastRoom = NULL;
lastX = 0;
lastY = 0;
if(i < 0 || i >= buildings.getLength())
//buildings是自己写的一个链表存放大楼的信息
{
return;
}
Building* b = (Building*)buildings.getAt(i);
if(b == NULL)
{
return;
}
Room* r;
Floor* f;

int w = 0;
int h = b->getFloorNum();
//调整TImage的大小
for (int j = 0; j < h; j++)
{
f = b->getFloorAt(j);
if (w < f->getRoomNum())
{
w = f->getRoomNum();
}
}
if((w+1)*75 > 713)
{
//roomMap1是一个TImage默认的大小为713*553

roomMap1->Width = (w+1)*75;//
}
else
{
roomMap1->Width = 713;
}
if(h*60 > 553)
{
roomMap1->Height = h*60;
}
else
{
roomMap1->Height = 553;
}
//把旧的擦去
roomMap1->Canvas->FillRect(Rect(0,0,roomMap1->Width,roomMap1->Height));
//开始画
for(int i=0;i<h;i++)
{
roomMap1->Canvas->TextOut(10,i*60+25,("第"+AnsiString(i+1)+"层"));
for(int j=1;j<=w;j++)
{
r = b->getRoomAt(i,j-1);
if(r == NULL)break;
//根据大小绘制图片
roomMap1->Canvas->Draw(j*75,i*60,roomEU);

roomMap1->Canvas->TextOut(j*75,i*60,r->getID());

}
}
//设置ScrollBar
if((roomMap1->Width - 713)>0)
{
ScrollBar1->Enabled = true;
ScrollBar1->Max = roomMap1->Width - 713;
}
else
{
ScrollBar1->Max = 0;
ScrollBar1->Enabled = false;
}
if((roomMap1->Height - 553) > 0)
{
ScrollBar2->Enabled = true;
ScrollBar2->Max = roomMap1->Height - 553;
}
else
{
ScrollBar2->Max = 0;
ScrollBar2->Enabled = false;
}

}

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧