C++Builder 程序员博客
7 Sep
我想在我刚刚实现的数据库存储图片程序的基础上拖动图片的大小!
是在按下鼠标后出现拖动的标志,然后在图片的右下角拖动图片将其放大.实现对图片的放大或缩小.
http://topic.csdn.net/t/20030106/17/1332155.html
5 楼jishiping(JSP 季世平)回复于 2003-01-06 18:30:16 得分 100其实很简单,不需要写什么程序:
1. 设定Image的属性DragKind=dkDock; DragMode=dmAutomatic; 设定Form
的属性DockSite=true。
2. 在Image的事件OnEndDock里写一行代码就可以了:
void __fastcall TForm1::Image1EndDock(TObject *Sender, TObject *Target,
int X, int Y)
{
Image1->HostDockSite = (TWinControl*)0xFFFFFFFF;
}
不好意思 回答错了,这个是拖动位置的
简单写了一个:
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if(X>Image1->Width-10 && Y>Image1->Height-10) { Image1->Cursor=crSizeNWSE; if(Shift.Contains(ssLeft)) { Image1->Width=X; Image1->Height=Y; } } else Image1->Cursor=crDefault; } //—————————————————————————
if(Shift.Contains(ssLeft))
这一句是什么意思?
1. 设定Image的属性DragKind=dkDock; DragMode=dmAutomatic; 设定Form
的属性DockSite=true。
这个方法我尝试过了,但是不我想要的效果,这个相当于又出来了一个FORM。
感谢你们的回答。
我想补充下当鼠标移动到图片的角落的时候出现可以拖动的标识,例如Image1->Cursor=crSizeA然后可以拖动他。
当鼠标按下不放时可以把他移动。这部分功能我基本实现了,但是我不知道如何响应的鼠标压下台起等动作,
还有将图片扩大或缩小的程序原理不是很清楚,
我说的可能比较罗嗦,真诚求教。
如果能用滚轮滚动得到放大和缩小也可以。
我油箱是liu3039345@126.com
希望能有源码。
//使用窗体的滑轮滚动事件,判断鼠标位置,如果在图片上滚动时就放大缩小图片
void __fastcall TForm1::FormMouseWheel(TObject *Sender, TShiftState Shift, int WheelDelta, TPoint &MousePos, bool &Handled) { POINT P; GetCursorPos(&P); ::ScreenToClient(Handle,&P); if(P.x > Image1->Left && P.x < Image1->Left+Image1->Width && P.y > Image1->Top && P.y < Image1->Top+Image1->Height) { if(WheelDelta<0) {//下滚放大 Image1->Width=Image1->Width+1; Image1->Height=Image1->Height+1; } else {//上滚缩小 Image1->Width=Image1->Width-1; Image1->Height=Image1->Height-1; } } } //—————————————————————————
谈谈数字图像的缩放算法
http://rockcarry.home.sunbo.net/show_hdr.php?xname=AHAETV0&dname=IGB7831&xpos=2
up
谢谢,我会尝试,继续求教.
放到paintbox里好点吧。
友情Up!