procedure TImageContainer.DoImgMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if ssDouble in Shift then begin if Button = mbLeft then begin if not IsCtrlDown then FImg.Zoom:= 100; end; if (Button = mbRight) or IsCtrlDown then begin FImg.AutoFit:= True; FImg.Repaint; FImg.AutoFit:= False; end end else begin FDragging:= True; m_CurPos:= Mouse.CursorPos; m_StartSize:= Point(FImg.ViewX, FImg.ViewY); end; end;
procedure TImageContainer.DoImgMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var l_Pos: TPoint; l_x, l_y: Integer; begin if not FDragging then Exit;
1、在图片上鼠标画一个框做标记,但是每次鼠标重新选择另一个地方时画框时前一个就没了,怎样
可以在图片上做多个标记?
2、再就是把框里的那部分图片截取出来作为一张新图片,这个还没解决~~~~~~~~
我下载的DEMO但是里面只有图片分割,而且他那个图片样式是5张分开的,不用鼠标去选的。
我刚用ImageEn对里面的好多属性,方法,过程还不明白。只能自己摸索着实验,谁用过给帮忙说明下
小弟在这谢谢了!~~~~
1、加载文件
FImg.IO.LoadFromFile(a_strFileName);
2、设置显示背景
FImg.Background:= clGray;
FImg.BackgroundStyle := iebsSolid;
3、显示棋盘背景
FImg.Background:= clWhite;
FImg.BackgroundStyle := iebsChessboard;
4、设置鼠标拖动
procedure TImageContainer.DoImgMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FDragging:= False;
FImg.Cursor:= crDefault;
end;
procedure TImageContainer.DoImgMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if ssDouble in Shift then
begin
if Button = mbLeft then
begin
if not IsCtrlDown then FImg.Zoom:= 100;
end;
if (Button = mbRight) or IsCtrlDown then
begin
FImg.AutoFit:= True;
FImg.Repaint;
FImg.AutoFit:= False;
end
end
else
begin
FDragging:= True;
m_CurPos:= Mouse.CursorPos;
m_StartSize:= Point(FImg.ViewX, FImg.ViewY);
end;
end;
procedure TImageContainer.DoImgMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
l_Pos: TPoint;
l_x, l_y: Integer;
begin
if not FDragging then Exit;
FImg.Cursor:= crSizeAll;
//计算偏移量
l_Pos:= Mouse.CursorPos;
l_x:= l_Pos.X - m_CurPos.X;
l_y:= l_Pos.Y - m_CurPos.Y;
FImg.ViewX:= m_StartSize.X - l_x;
FImg.ViewY:= m_StartSize.Y - l_y;
end;
5、查看显示百分比
Label1.Caption:= Format('Zoom:%f%%', [FImg.Zoom]);
6、设置缩放时显示不失真
ZoomFilter:= rfNearest;
DelayZoomTime:= 500;
7、打印图片
FImg.IO.DoPrintPreviewDialog();