Delphi 怎么把图片通过Openpicturedialog组件导入到TDrawGrid里面?

如图,把选中的图片导入到TDrawGrid里面... 如图, 把选中的图片导入到 TDrawGrid里面 展开
 我来答
dodolon
2013-10-23 · TA获得超过7713个赞
知道大有可为答主
回答量:4477
采纳率:84%
帮助的人:2152万
展开全部

首先,你的程序中必须解决多个图片的存储的问题,TDrawGrid它只负责显示,它不负责你的图片的存储。窗体的显示总是在刷新的,如果程序不存储图片,哪怕你能把图片显示出来,窗体一刷新,它就会消失。然后TDrawGrid的DrawCell事件里,根据当前刷新的行、列值,计算该显示第几个图片,在当前单元格的画布上将图片画出来。

procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  n: Integer;
begin
  n:=ARow*DrawGrid1.ColCount + ACol +1;
  if n <= Images.Count then
    DrawGrid1.Canvas.Draw(Rect.Left,Rect.Top,TImage(Images.Items[n-1]).Picture.Graphic);
end;
完整代码请下载附件,因为图片类型有多种,代码仅以ICO(32*32像素)为例,实际应用中,如果要显示多种格式的图片,要加上图片类型识别的代码。

更多追问追答
追问
谢谢指教,   比如说我要放一张128×32的图片,  让它显示在第一排, 而不是只显示第一个其他的被疲敝应该怎么弄?
追答
不太明白你的意图,像QQ聊天选表情图片那样吗?鼠标到哪个表情图片,那个表情图片就加大?如果仅仅是要显示128×32的图片,把TDrawGrid的默认列宽设成128就行了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式