如何解决鼠标轻轻划过Image控件,OnMouseMove事件悬浮显示Image控件里图片的高清大图!!!!

_xiaowugg_ 2017-03-01 11:02:55
procedure TfrmRTMN.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
Jpg:TJPEGImage;
bmp:TBitmap;
begin
try
try
Jpg := TJPEGImage.Create;
bmp := TBitmap.Create;
Jpg.LoadFromFile(picPath);//加载图片
bmp.Assign(Jpg);
bmp.Canvas.Draw(0,0,Jpg);
finally
bmp.Free;
end;
finally
Jpg.Free;
end;
end;
就是不能显示出来,无论Canvas.Draw()里的参数是控件转化的 还是变量加载的 都不行
请教各位朋友,如果能显示,是否能悬浮显示大图呢?
各位有木有遇到过这样的问题,请教大家的实现方式....感激不尽 感激不尽!!
...全文
1343 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝色光芒 2017-04-24
  • 打赏
  • 举报
回复
引用 15 楼 u010165006 的回复:
Image控件有这个事件吗?你的是什么版本?
我用的XE10 请向前看。 再说,即使用的D7,没有OnMouseEnter,那放个无边框的Panel,然后再Panel里放Image可以不?这样不就有OnMouseEnter了 触发一次和触发多次的性质都不一样。
ooolinux 2017-04-24
  • 打赏
  • 举报
回复
引用 17 楼 kiboisme 的回复:
[quote=引用 15 楼 u010165006 的回复:] Image控件有这个事件吗?你的是什么版本?
我用的XE10 请向前看。 再说,即使用的D7,没有OnMouseEnter,那放个无边框的Panel,然后再Panel里放Image可以不?这样不就有OnMouseEnter了 触发一次和触发多次的性质都不一样。[/quote] OnMouseMove在这里有个好处,可以让悬浮窗口位置随鼠标移动。
蓝色的天堂 2017-04-19
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/harvardfeng/7076747 要分比较多,不过肯定可以实现你需要功能。 换位思考,双击直接打开大图就可以了!
ooolinux 2017-03-06
  • 打赏
  • 举报
回复
引用 14 楼 kiboisme 的回复:
为什么是OnMouseMove?OnMouseMove当鼠标划过控件时会触发很多次。 这个应该是用事件: OnMouseEnter和OnMouseLeave
Image控件有这个事件吗?你的是什么版本?
蓝色光芒 2017-03-06
  • 打赏
  • 举报
回复
为什么是OnMouseMove?OnMouseMove当鼠标划过控件时会触发很多次。 这个应该是用事件: OnMouseEnter和OnMouseLeave
ooolinux 2017-03-06
  • 打赏
  • 举报
回复
引用 12 楼 u010165006 的回复:
新建一个Form2,在Form1的Image1的OnMouseMove事件处理函数中显示Form2,并把大图画到Form2(的Image)上。
Form2的BorderStyle设置为bsNone
ooolinux 2017-03-06
  • 打赏
  • 举报
回复
新建一个Form2,在Form1的Image1的OnMouseMove事件处理函数中显示Form2,并把大图画到Form2(的Image)上。
不得闲 2017-03-01
  • 打赏
  • 举报
回复
你这画到哪里去了?画到了位图的Canvas上,位图和你的界面的控件一点联系都没有,能显示出来才有鬼了
_xiaowugg_ 2017-03-01
  • 打赏
  • 举报
回复
悬浮大图应该去鼠标的坐标来显示
zbdzjx 2017-03-01
  • 打赏
  • 举报
回复
load、draw然后free,大图显示到哪里呢?
lyhoo163 2017-03-01
  • 打赏
  • 举报
回复


是这样的效果吗?代码如下:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Panel1: TPanel;
Image2: TImage;
Image1: TImage;
procedure Image2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Image2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Image1.Picture.Graphic<>Image2.Picture.Graphic
then Image1.Picture.Graphic:=Image2.Picture.Graphic;
Image1.Visible:=True;
end;

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Image1.Visible:=False;
end;

end.
_xiaowugg_ 2017-03-01
  • 打赏
  • 举报
回复
恩 谢谢
大肚肥肥 2017-03-01
  • 打赏
  • 举报
回复
你搜索下delphi 放大镜 看对你有启发没有
  • 打赏
  • 举报
回复
引用 6 楼 wangchengwu5 的回复:
bmp.Canvas.Draw(0,0,Jpg); 改成 Image1.Canvas.Draw(0,0,Jpg); 不需要 bmp 变成这样子了
那是因为这个Image1是空的,需要先初始化一下,比如预先装载一个bitmap,或者在TForm1.FormCreate事件中加入: Image1.Canvas.FillRect(Rect(0, 0, Image1.Width, Image1.Height));
_xiaowugg_ 2017-03-01
  • 打赏
  • 举报
回复
我这实现方式可能有问题,有人知道这个效果怎么实现么
_xiaowugg_ 2017-03-01
  • 打赏
  • 举报
回复
bmp.Canvas.Draw(0,0,Jpg);
改成
Image1.Canvas.Draw(0,0,Jpg);
不需要 bmp
变成这样子了

_xiaowugg_ 2017-03-01
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
bmp.Canvas.Draw(0,0,Jpg);
改成
Image1.Canvas.Draw(0,0,Jpg);
不需要 bmp

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧