图象处理(200分)

  • 主题发起人 主题发起人 xcj
  • 开始时间 开始时间
X

xcj

Unregistered / Unconfirmed
GUEST, unregistred user!
要在一个Timage上放许多image控件必须保证其透明,同时,能够象Delph一样能够拖动.缩放,就象设计期间放控件一样
 
请先说说这样做的目的,如何?
 
透明: Transparent为True;
拖动、缩放比较麻烦,得响应OnMouseDown, OnMouseMove, OnMouseUp。
 
请问必须在image对象上放image对象吗?如果不是,就可用blt...
请你详细说明要求, 我好知道如何回答你:)
 
透明: Transparent为True;
拖动、缩放响应消息 sc_DragMove (= F012)
 
求个image上的RGB值,还要加下面的一些程序:
bai 表示所要求的百分数;
 r:=r1*bai1+r2*bai2+r3*bai3.....;
g:=g1*bai1+g2*bai2+g3*bai3.....;
b:=b1*bai1+b2*bai2+b3*bai3.....;
 
我也遇到这个问题,Transparent为True,有时可以,而有时不行,
我是这样做的:
在Image1上画好曲线,当鼠标在image1上拖动时,选出区域,然后将该区域的
曲线画到与所选区域同样大小的image2上,我要image2透明,并可在Imahe1上拖动,
就遇到了Transparent为True,有时可以,而有时不行的问题,而在c++builder中
却无此问题,不知为何?
 
如果是想做电厂接线图一类的话,放置控件多了不行,会影响执行速度和浪费系统
资源。看看我的问题
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=280805

如果不是见下:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button2: TButton;
Image1: TImage;
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Button2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Button2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
lblPick: Tlabel;
bdrag:boolean;
x1,y1:integer;
newobj_x,newobj_y:integer;
newobj_tag:integer;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;

begin
bdrag:=false;

for i := 0 to 10 do
begin
lblPick:=Tlabel.Create(form1);
lblPick.Parent := form1; //注意将其Parent置为容器(一般为Form)
// lblpick.Picture.LoadFromFile ('../picmove/ufo.bmp');
// lblpick.Stretch :=true;
lblpick.Transparent :=true;
lblPick.Left :=100+50*(i div 25);
lblPick.Top := 100+(i mod 24)*50;
lblPick.Caption := IntToStr(i+1);
lblPick.Hint :=IntToStr(i+1);
lblPick.Tag:=i;
lblPick.ShowHint :=true;
lblPick.OnClick:=Button2Click;
lblpick.OnMouseDown :=Button2MouseDown;
lblpick.OnMouseMove :=Button2MouseMove;
lblpick.OnMouseUp :=Button2MouseUp;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);

begin
caption:=TButton(Sender).Caption;
end;



procedure TForm1.Button2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
x1:=x;
y1:=y;
bdrag:=true;
caption:=TButton(Sender).Caption;
end;

procedure TForm1.Button2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if bdrag then
begin
TButton(Sender).left:=TButton(Sender).left+x-x1;
TButton(Sender).top:=TButton(Sender).top+y-y1;
end;{if}
caption:=TButton(Sender).Caption;
end;

procedure TForm1.Button2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
bdrag:=false;
caption:=TButton(Sender).Caption;
end;

end.
 
您是否为了一个小小的矢量图形的应用程序,而找不到合适的控件,自己从底层编制,工作量又巨大,使用象Mapinfo等大型软件又觉得大材小用、喧宾夺主!?
TCAD正是为了您的这种需求而产生的,她由ObjectPascal编制完成,不使用任何Dll,OCX,简单、快速,安装方便,可绘制、拖动、删除图形,现在您终于找到了,快下载测试程序吧!

http://www.huzhou.zj.cn/~fhb/cc/html/tcad.html
 
多人接受答案了。
 

Similar threads

回复
0
查看
1K
不得闲
D
回复
0
查看
802
DelphiTeacher的专栏
D
D
回复
0
查看
747
DelphiTeacher的专栏
D
D
回复
0
查看
696
DelphiTeacher的专栏
D
后退
顶部