Delphi Windows缩略图/帧视图
如果有一个带有垂直滚动条的面板和一个描述相关图像的图像矩阵,那么制作缩略图视图的最简单方法是什么?我还希望这样,如果父帧水平调整大小,矩阵将收缩到所需的列数,以便在没有水平滚动条的情况下显示缩略图。我希望能够拖动和重新排列这些缩略图以及。写这篇文章的工具包其实并不重要。如果你知道用MFC做这件事的好方法,那很酷,Delphi/C++builder也很酷。只是某种本地应用程序框架 哇,这听起来很像我在乞求家庭作业的帮助。我发誓这是为一些驱动激光投影仪的软件设计的。看看:Delphi Windows缩略图/帧视图,delphi,qt,mfc,native,thumbnails,Delphi,Qt,Mfc,Native,Thumbnails,如果有一个带有垂直滚动条的面板和一个描述相关图像的图像矩阵,那么制作缩略图视图的最简单方法是什么?我还希望这样,如果父帧水平调整大小,矩阵将收缩到所需的列数,以便在没有水平滚动条的情况下显示缩略图。我希望能够拖动和重新排列这些缩略图以及。写这篇文章的工具包其实并不重要。如果你知道用MFC做这件事的好方法,那很酷,Delphi/C++builder也很酷。只是某种本地应用程序框架 哇,这听起来很像我在乞求家庭作业的帮助。我发誓这是为一些驱动激光投影仪的软件设计的。看看: 另外,注册的Delphi
另外,注册的Delphi客户可以从Embarcadero网站免费下载TMS平滑组件。如果您不是注册的Delphi用户,那么您可以从TMS网站购买该集合。这里是我用来显示变量集合的摘录代码
numImages
网络摄像头数量
const MaxImages = 24;
type
TForm1 = class(TForm)
...
images: array[1..MaxImages] of TWebcamImage;
numImages: integer;
....
end;
TWebCamImage
是TImage
的后代,具有一些附加属性,如网络摄像头的原始url、保存图片的文件名以及双击在辅助面板中打开图片的处理程序
下面是用于在面板中排列图像的代码
procedure TForm1.ArrangeImages;
var i, numh, numv : integer;
const margin=2;
begin
case numImages of
1: begin numh:=1; numv:=1; end;
2: begin numh:=2; numv:=1; end;
3: begin numh:=3; numv:=1; end;
4: begin numh:=2; numv:=2; end;
5,6: begin numh:=3; numv:=2; end;
7,8: begin numh:=4; numv:=2; end;
9: begin numh:=3; numv:=3; end;
10: begin numh:=5; numv:=2; end;
11,12: begin numh:=4; numv:=3; end;
13,14,15: begin numh:=5; numv:=3; end;
16: begin numh:=4; numv:=4; end;
17,18,19,20: begin numh:=5; numv:=4; end;
else begin numh:=6; numv:=4; end;
end;
for i:=1 to numImages do
begin
images[i].Width := (panel2.Width div numh) - margin * 2;
images[i].Height := (panel2.Height div numv) - margin * 2;
images[i].Top := (((i-1) div numh) * (panel2.Height div numv)) + margin;
images[i].Left := (((i-1) mod numh) * (panel2.Width div numh)) + margin;
end;
end;
此方法在表单初始化时调用,挂接在oncreate
事件和onresize
事件中
procedure TForm1.FormCreate(Sender: TObject);
begin
...
numImages:=0;
for i:=1 to maxImages do
begin
imageURL:=ini.ReadString('images','imageURL'+intToStr(i),imageURLDefault);
if imageURL<>'' then
begin
inc(numimages);
images[numImages]:=TWebCamImage.create(self,panel2,imageURL);
end;
....
end;
....
ArrangeImages;
....
end;
procedure TForm1.FormResize(Sender: TObject);
begin
ArrangeImages;
end;
过程TForm1.FormCreate(发送方:TObject);
开始
...
数字图像:=0;
对于i:=1的最大值
开始
imageURL:=ini.ReadString('images','imageURL'+intToStr(i),imageURLDefault);
如果是imageURL“”,则
开始
公司(numimages);
images[numImages]:=TWebCamImage.create(self,panel2,imageURL);
结束;
....
结束;
....
安排图像;
....
结束;
过程TForm1.FormResize(发送方:TObject);
开始
安排图像;
结束;
我不太确定我是否理解您的意思,但我会从一个框架开始,其中包含图像及其描述。然后,我将使用TFlowPanel来保存框架的实例化。我认为,实现拖放应该没有太多的工作。但从未尝试过
如果有很多图片,我认为你应该选择一个自己的双缓冲解决方案
最后,您只需插入激光投影组件并将其连接到激光投影转向装置……我想我更感兴趣的是如何构造这样一个组件,而不是如何找到组件本身。我最近遇到了代码(Delphi)这样做。寻找“线程缩略图演示”在真棒!这或多或少就是我想要的。。。现在我只需要弄清楚如何进行拖放…这里是指向TMS Smooth Controls for Delphi和C++Builder 2010@stukelly的下载链接,我是Delphi XE3的注册客户,我可以在注册用户下载中看到很多东西,除了TMS组件。当我尝试从下载时。我将收到错误“抱歉,您没有访问此提交的权限。请查看RAD Studio和组件的类似提交,以及Tim DelChiaro的其他提交。”为什么?