Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2012, 13:35   #1
Hitory
Пользователь
 
Регистрация: 16.11.2011
Сообщений: 10
По умолчанию работа с библиотеками dll(delphi)

задача в следующем: нужно создать dll-библиотеку, содержащую рисунок формата .bmp, затем выгрузить ее на форму, затем преобразовать рисунок в черно-белый. Исходники двух программ есть(сама библиотека, которая загружает картинку, и преобразование в чб картинку), но как теперь прописать для OnClick'а преобразование рисунка в чб-не знаю... подскажите, кто знает

Код:
unit lab5_1;


interface

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



type
  TForm1 = class(TForm)
    Panel1: TPanel;
    SBLoad: TSpeedButton;
    SBStretch: TSpeedButton;
    SBCenter: TSpeedButton;
    Panel2: TPanel;
    ImgMain: TImage;
    opndlgLoad: TOpenPictureDialog;
    Go1: TSpeedButton;
    procedure SBLoadClick(Sender: TObject);
    procedure SBStretchClick(Sender: TObject);
    procedure SBCenterClick(Sender: TObject);
    procedure Go1Click(Sender: TObject);

end;


var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.Go1Click(Sender: TObject);
var i,j: integer;
    c,d: TColor;
begin
Label1.Visible:=True; //текст метки - "Подождите, пожалуйста..."
Application.ProcessMessages;
for i:=Image1.Left to Image1.Left+Image1.Width do
for j:=Image1.Top to +Image1.Top+Image1.Height do
begin
c:=Image1.Picture.Bitmap.Canvas.Pixels[i-Image1.Left,j-Image1.Top];
d:=RgbToGray(c);
Image1.Picture.Bitmap.Canvas.Pixels[i-Image1.Left,j-Image1.Top]:=d;
end;
Label1.Visible:=False;
Application.ProcessMessages;
end;


procedure TForm1.SBCenterClick(Sender: TObject);
begin
 imgMain.Center:= SBCenter.Down;
end;

procedure TForm1.SBLoadClick(Sender: TObject);
begin
if opndlgLoad.Execute then
   imgMain.Picture.LoadFromFile(opndlgLoad.FileName);
end;

procedure TForm1.SBStretchClick(Sender: TObject);
begin
imgMain.Stretch:= SBStretch.Down;
end;



function RgbToGray(RGBColor : TColor) : TColor;
    var Gray : byte;
    begin
Gray:=Round((0.30*GetRValue(RGBColor))+
(0.59*GetGValue(RGBColor))+(0.11*GetBValue(RGBColor)));
Result:=RGB(Gray, Gray, Gray);
end;

end.


Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure DrawBMP (Handle:THandle); stdcall; external 'Project1.dll';

procedure TForm1.Button1Click(Sender: TObject);
begin
  DrawBMP(Canvas.Handle);
end;

function RgbToGray(RGBColor : TColor) : TColor;
    var Gray : byte;
    begin
Gray:=Round((0.30*GetRValue(RGBColor))+
(0.59*GetGValue(RGBColor))+(0.11*GetBValue(RGBColor)));
Result:=RGB(Gray, Gray, Gray);
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
// ????????????
end;

end.
Hitory вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стандартные средства для работы с динамическими библиотеками(dll,so) Пепел Феникса Общие вопросы C/C++ 3 20.08.2011 13:11
Работа с DLL в Delphi Vladimir4152 Помощь студентам 15 07.02.2011 13:43
Работа с dll библиотеками в С# kloffelin Помощь студентам 6 27.09.2010 23:14
Работа с библиотеками типов(TLB) в С++ MadBoxer Общие вопросы C/C++ 1 14.05.2009 16:59
работа с библиотеками kuzmich Общие вопросы Delphi 2 25.02.2009 19:39