Показать сообщение отдельно
  #7  
Старый 11.01.2011, 18:07
Abracadabra Abracadabra вне форума
Прохожий
 
Регистрация: 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;
Ответить с цитированием