问题:DLL调用图像 ( 积分: 42 )

  • 主题发起人 主题发起人 chenliyan163
  • 开始时间 开始时间
C

chenliyan163

Unregistered / Unconfirmed
GUEST, unregistred user!
下面是我DLL中的代码
library XWJDLL;

uses
SysUtils,Classes,Windows,Graphics,ExtCtrls,Dialogs;
type
TResFullCount = record
XRes:integer;
YRes:integer;
BmpRes:Tbitmap;
end;

function GetNinePlix(ScrImg: Tbitmap;x, y: integer): TResFullCount;stdcall;
var
BriefVal:TResFullCount;
BriefBmp:Tbitmap;
begin
BriefBmp:=Tbitmap.Create;
BriefBmp.Width:=ScrImg.Width;
BriefBmp.Height:=ScrImg.Height;
BriefBmp.Assign(scrimg);
BriefBmp.Canvas.Brush.Style:=bsClear;
BriefBmp.Canvas.pen.Color:=rgb(255,0,0);
BriefBmp.Canvas.MoveTo(x,0);
BriefBmp.Canvas.LineTo(x,ScrImg.Height);
BriefVal.BmpRes:=BriefBmp;
BriefVal.XRes:=1;
BriefVal.YRes:=1;
result:=BriefVal;
end;

//定义别名
exports
GetNinePlix name 'CJGetline';

{$R *.res}

begin
end.



当我在button事件中写这句话:GetNinePlix(Image1.Picture.Bitmap,10,10);
系统提示:Cannot saaign a TBitmap to a Tbitmap
这是为什么?
应该如何改?
我的目的是:把源图拷贝一份像画,一条线后返回给另一个图像
请各位帮帮忙,我已经是全部积分了
 
下面是我DLL中的代码
library XWJDLL;

uses
SysUtils,Classes,Windows,Graphics,ExtCtrls,Dialogs;
type
TResFullCount = record
XRes:integer;
YRes:integer;
BmpRes:Tbitmap;
end;

function GetNinePlix(ScrImg: Tbitmap;x, y: integer): TResFullCount;stdcall;
var
BriefVal:TResFullCount;
BriefBmp:Tbitmap;
begin
BriefBmp:=Tbitmap.Create;
BriefBmp.Width:=ScrImg.Width;
BriefBmp.Height:=ScrImg.Height;
BriefBmp.Assign(scrimg);
BriefBmp.Canvas.Brush.Style:=bsClear;
BriefBmp.Canvas.pen.Color:=rgb(255,0,0);
BriefBmp.Canvas.MoveTo(x,0);
BriefBmp.Canvas.LineTo(x,ScrImg.Height);
BriefVal.BmpRes:=BriefBmp;
BriefVal.XRes:=1;
BriefVal.YRes:=1;
result:=BriefVal;
end;

//定义别名
exports
GetNinePlix name 'CJGetline';

{$R *.res}

begin
end.



当我在button事件中写这句话:GetNinePlix(Image1.Picture.Bitmap,10,10);
系统提示:Cannot saaign a TBitmap to a Tbitmap
这是为什么?
应该如何改?
我的目的是:把源图拷贝一份像画,一条线后返回给另一个图像
请各位帮帮忙,我已经是全部积分了
 
BriefBmp.Assign(scrimg);
BriefVal.BmpRes:=BriefBmp;没问题/
可能是Image1.Picture.Bitmap的事吧/
 
接受答案了.
 
后退
顶部