
11.01.2011, 18:07
|
Прохожий
|
|
Регистрация: 11.01.2011
Сообщения: 6
Репутация: 10
|
|
Кода не так уж много...вот
Описание интерфейса
Код:
MYAPI2 = interface
['{FE84A03E-74F6-48B9-97B6-C9EC4ECFD174}']
procedure ModifPicture(var p: TBitMap);
end;
Dll
Код:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin, ExtCtrls, Buttons, ColorGrd, Menus, ExtDlgs,InterfaceUnit;
{$R *.res}
type
PictureFilter = class(TInterfacedObject, MYAPI2)
procedure ModifPicture(var p: TBitMap);
end;
procedure PictureFilter.ModifPicture(var p: TBitMap);stdcall;
var
i,j:integer;
begin
for i := 0 to p.Width-1 do
for j:= 0 to p.Height-1 do
p.Canvas.Pixels[i,j]:=rgb(0,0,GetbValue(p.Canvas.Pixels[i,j]));
end;
function CreateFilter:MYAPI2;stdcall;
begin
Result:= PictureFilter.Create;
end;
exports
CreateFilter;
begin
end.
Само приложение
Код:
type
TForm1 = class(TForm)
ColorGrid1: TColorGrid;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
Image1: TImage;
SpinEdit1: TSpinEdit;
SpeedButton4: TSpeedButton;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
OpenPictureDialog1: TOpenPictureDialog;
SavePictureDialog1: TSavePictureDialog;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure SpinEdit1Change(Sender: TObject);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure SpeedButton4Click(Sender: TObject);
public
procedure LoadData;
end;
TCreateFilter = function: MYAPI2;
procedure TForm1.LoadData;
var
p:Tbitmap;
hPlugIn: THandle;
CreateFilter: TCreateFilter;
Filter: MYAPI2;
begin
hPlugIn := LoadLibrary('plugin.dll');
CreateFilter := GetProcAddress(hPlugIn,'CreateFilter');
if Assigned(CreateFilter) then
begin
Filter := CreateFilter;
p:=image1.Picture.Bitmap;
filter.ModifPicture(p);
image1.Refresh;
end;
end;
procedure TForm1.N6Click(Sender: TObject);
var
i,j: Integer;
begin
LoadData;
end;
|