能力值:
( LV2,RANK:10 )
2 楼
这个简单嘛,我不会delphi
但也应该能想到
首先声明三个waterdll.dll中的函数!
WaterInit
WaterMouseAction
WaterTimer
再调用这三个函数就行了啊!~
能力值:
( LV2,RANK:10 )
3 楼
function WaterInit(bitmap:THandle):Integer; stdcall;external 'waterdll.dll';
function WaterMouseAction(hdc:THandle;sx,sy,mx,my,half,deep:int64):Integer;stdcall;external 'waterdll.dll';
function WaterTimer(hdc:THandle;sx,sy:int64):Integer; stdcall;external 'waterdll.dll';
这三个声明有误?
Form1.hdc
在Delphi中怎么表示?
能力值:
( LV2,RANK:10 )
4 楼
请问 那个VB工程的密码是……?
能力值:
( LV2,RANK:10 )
5 楼
最初由 米娜 发布 请问 那个VB工程的密码是……?
那个vb工程?上面链接的例子没有加密码的。
能力值:
( LV6,RANK:90 )
6 楼
最初由 grx 发布 function WaterInit(bitmap:THandle):Integer; stdcall;external 'waterdll.dll'; function WaterMouseAction(hdc:THandle;sx,sy,mx,my,half,deep:int64):Integer;stdcall;external 'waterdll.dll'; function WaterTimer(hdc:THandle;sx,sy:int64):Integer; stdcall;external 'waterdll.dll'; ........
Form1.hdc=Form1.Canvas.Handle
或Self.Canvas.Handle
Self(delphi)=Me(VB)
能力值:
( LV13,RANK:970 )
7 楼
delphi用api,import以下头文件就行。不用专门搞这样的声明。
laoqian在不?可以给你说说
能力值:
( LV2,RANK:10 )
8 楼
最初由 nbw 发布 delphi用api,import以下头文件就行。不用专门搞这样的声明。 laoqian在不?可以给你说说
谢了nbw兄!很期待laoqian的指点。
能力值:
( LV6,RANK:90 )
9 楼
最初由 grx 发布 谢了nbw兄!很期待laoqian的指点。 我测试了一下
还不错的效果
附上delphi改的程序
不过只能用bmp图片
可能是我选的图片控件的事
附件:DelphiSmaple.rar
能力值:
( LV6,RANK:90 )
10 楼
最初由 nbw 发布 delphi用api,import以下头文件就行。不用专门搞这样的声明。 laoqian在不?可以给你说说
按照你说的没有成功
只得按照隐式调用的格式作了一便
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, jpeg;
type
TForm1 = class(TForm)
Image1: TImage;
Timer1: TTimer;
procedure Load(Sender: TObject);
procedure MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
function WaterInit(bitmap:Integer):Integer; stdcall; external 'waterdll.dll';
function WaterMouseAction(hdc:Integer; sx,sy,mx,my,half,deep:Integer):Integer; stdcall; external 'waterdll.dll';
function WaterTimer(hdc:Integer; sx,sy:Integer):Integer; stdcall; external 'waterdll.dll';
implementation
{$R *.dfm}
procedure TForm1.Load(Sender: TObject);
begin
WaterInit(image1.Picture.Bitmap.Handle);
end;
procedure TForm1.MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
WaterMouseAction(form1.Canvas.Handle,10,10,X,Y,60,500);
end;
procedure TForm1.MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
WaterMouseAction (form1.Canvas.Handle,10,10,X,Y,5,80);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
WaterTimer(form1.Canvas.Handle,10,10);
end;
end.
请指正
能力值:
( LV2,RANK:10 )
11 楼
larblue兄:
谢。
一个新的问题:在VB里鼠标移出窗体后水波纹还将继续,直到平静下来;
按着码在Delphi 7里,鼠标移出窗体后,水纹波动被中止,停在一种别扭的状态。
能力值:
( LV6,RANK:90 )
12 楼
最初由 grx 发布 larblue兄: 谢。
不客气
还有很多缺点不知道你发现没有
完全按照VB的写法
鼠标移出窗口后画面上的水波回静止
但是VB不会
相信是delphi的传递事件的时候的问题
希望大家能帮忙解决
能力值:
( LV4,RANK:50 )
13 楼
procedure TForm1.Timer1Timer(Sender: TObject);
begin
WaterTimer(Form1.Canvas.Handle,10,10);
SendMessage(Form1.Handle, WM_PAINT, 0, 0);
//这样那鼠标离开后也没问题了
end;
能力值:
( LV2,RANK:10 )
14 楼
最初由 freecat 发布 procedure TForm1.Timer1Timer(Sender: TObject); begin WaterTimer(Form1.Canvas.Handle,10,10); SendMessage(Form1.Handle, WM_PAINT, 0, 0); //这样那鼠标离开后也没问题了 ........
Perfect!
能力值:
( LV6,RANK:90 )
15 楼
最初由 freecat 发布 procedure TForm1.Timer1Timer(Sender: TObject); begin WaterTimer(Form1.Canvas.Handle,10,10); SendMessage(Form1.Handle, WM_PAINT, 0, 0); //这样那鼠标离开后也没问题了 ........
另一种写法
将form1.Canvas.Handle 替换成 getdc(handle) 即可
造成上述现象的原因是
form1.Canvas.Handle 是属性值
getdc(handle) 是通过函数取值有返回值
能力值:
( LV6,RANK:90 )
16 楼
不能使用除bmp以外的图片
是因为image组件获取图片句柄我用的是
image1.Picture.Bitmap .Handle
所以只能用BMP
但是这是一个GDI对象
GDI支持对象到句柄的方法
请教大家怎么样能获得图片的文件句柄
或者用什么方法载入的图片支持GDI对象
THANK~~~~~~~~~
能力值:
( LV9,RANK:330 )
17 楼
这应该找firstrose问问,他研究过的!
能力值:
( LV6,RANK:90 )
18 楼
最初由 laoqian 发布 这应该找firstrose问问,他研究过的!
laoqian 也解决不了吗
能力值:
( LV9,RANK:330 )
19 楼
我很菜,呵呵,我只是破解,不太会编程。等firstrose来了,一定可以解决。别的不敢说,他可是delphi高手,几乎没他解决不了的。
能力值:
( LV6,RANK:90 )
20 楼
最初由 laoqian 发布 我很菜,呵呵,我只是破解,不太会编程。等firstrose来了,一定可以解决。别的不敢说,他可是delphi高手,几乎没他解决不了的。
呵呵
个个都说自己很菜
那我等岂不是要撞墙了
能力值:
( LV2,RANK:10 )
21 楼
最初由 larblue 发布 呵呵 个个都说自己很菜 那我等岂不是要撞墙了 ........
不能
,你行的。
能力值:
( LV6,RANK:90 )
22 楼
最初由 grx 发布 不能 ,你行的。 说实话我不会delphi的
接过你的代码才看了几眼SDK
我一直是用BCB/VC/VB的