Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Где можно посмотреть пример работы с KOLJPGImage? [Lazarus, WinCE]


Страницы:   1 2

Дмитрий Пырин ©   (2007-10-23 13:44:00) 

Вопрос, наверное, к создателю- Дмитрию Матвееву.
Дмитрий, не могли-бы вы выложить пример работы с KOLJPGImage ?
я пробовал по аналогии с JpegObj, но налицо явное расхождение в методах.


  (2008-05-30 03:12:00) [1]

Удалено модератором


  (2008-05-29 23:36:00) [2]

Удалено модератором


Дмитрий Пырин   (2008-04-03 07:15:00) [3]

Я не жалуюсь на миррор, просто всю жизнь писал исключительно на ассемблере, и не привык к требованиям обьявления и инициализации переменных в ЯВУ. Поэтому и чистый КОL мне роднее и понятней :)


GMax   (2008-04-02 22:55:00) [4]

проще всего

procedure DrawPaint( Dummy: Pointer; Sender: PControl; DC: HDC );
begin
if (JPG<>nil) and (JPG^.Bitmap <> nil) and not JPG^.Bitmap^.Empty then JPG^.Bitmap^.Draw(DC, 20, 20);
end;

и не жаловаться на Mirror, коли руки кривы :)


D[u]fa   (2008-04-02 14:17:00) [5]

buOpen^.OnClick := TOnEvent( MakeMethod( nil, @OpenPic ) );

Procedure OpenPic ;//( Dummy : Pointer; Sender : PControl );

по-моему явная ошибка


Дмитрий Пырин   (2008-04-02 13:34:00) [6]

урааааа.. !!!!!!!!
заработало.. всем спасибо :)


program project1;
uses
KOL,Windows,Messages,ImageDecompress;

var
Form,
pTop,
PB,
buOpen,
SBox:pControl;
JPG:PImageDecompress;

procedure DrawPaint( Dummy: Pointer; Sender: PControl; DC: HDC );
begin
if (JPG^.Bitmap <> nil) and not JPG^.Bitmap^.Empty then JPG^.Bitmap^.Draw(DC, 0, 0);
end;

Procedure OpenPic ;//( Dummy : Pointer; Sender : PControl );
begin
jpg^.LoadFromFile(ExtractFilePath(ParamStr(0))+'f.jpg');
PB^.Width :=  JPG^.Bitmap^.Width ;
PB^.Height:=  JPG^.Bitmap^.Height;
end;
//=======================================
begin
Applet := NewApplet('Pixie');
Form := NewForm(Applet,'Pixie');
jpg:=NewImageDecompress;
// --------интерфейс -----------------------------
pTop := NewPanel(Form,esRaised)^. SetAlign(caTop);
pTop^.Height := 35;

buOpen := NewButton(pTop,'show')^.SetAlign(caLeft);
buOpen^.OnClick := TOnEvent( MakeMethod( nil, @OpenPic ) );
SBox := NewScrollBoxEx(Form,esLowered)^.SetAlign(caClient);
PB := NewPaintBox(SBox);
PB^.OnPaint := TOnPaint( MakeMethod( nil, @DrawPaint ) );
// -------------------------------------------------------

run(Applet);

end.  


ЗЫ:
больше я в МСК ни ногой :(  только PURE KOL .. как в тьюторе по МАСМ-у написано "PURE and SIMPLE" :)


Дмитрий К   (2008-04-02 13:22:00) [7]


> ошибка рантайма вылетает сразу при запуске.

правильно. jpg-то не создан.


Дмитрий Пырин   (2008-04-02 13:16:00) [8]

ошибка рантайма вылетает сразу при запуске.
проблема явно в этой процедуре:

procedure DrawPaint( Dummy: Pointer; Sender: PControl; DC: HDC );
begin
if (JPG^.Bitmap <> nil) and not JPG^.Bitmap^.Empty then JPG^.Bitmap^.Draw(DC, 20, 20);
end;


если её содержимое закомментировать , то вылета ошибки рантайма нет.


Дмитрий Пырин   (2008-04-02 13:08:00) [9]

если не трудно, попробуйте пожалуйста скомпилировать у себя , возможно у меня с компилятором проблемы ?

я работаю на:

Lazarus-0.9.23-fpc-2.2.0-20071019-win32
fpc-2.2.0.arm-wince
kolce_rev247


Дмитрий Пырин   (2008-04-02 13:03:00) [10]

гы.. пардон, ничаяно 2 раза вставил

PB^.OnPaint := TOnPaint( MakeMethod( nil, @DrawPaint ) );


у меня в исходнике одна.. но сути это не меняет.. как не работало, так и не работает :(


Дмитрий Пырин   (2008-04-02 12:59:00) [11]

продолжаю танцы с бубном.. плюнул на визуальную разработку и написал вот так :

program project1;
{$mode objfpc}{$H+}
uses
KOL,Windows,Messages,ImageDecompress;

var
Form,
pTop,
PB,
buOpen,
SBox:pControl;
JPG:PImageDecompress;

procedure DrawPaint( Dummy: Pointer; Sender: PControl; DC: HDC );
begin
if (JPG^.Bitmap <> nil) and not JPG^.Bitmap^.Empty then JPG^.Bitmap^.Draw(DC, 20, 20);

end;
///////////////////////////////////////////////////////////
Procedure OpenPic ;//( Dummy : Pointer; Sender : PControl );
begin
jpg:=NewImageDecompress;
jpg^.LoadFromFile(ExtractFilePath(ParamStr(0))+'1.jpg');
PB^.Width :=  JPG^.Bitmap^.Width ;
PB^.Height:=  JPG^.Bitmap^.Height;

end;

begin

Applet := NewApplet('Pixie');
Form := NewForm(Applet,'Pixie');

// -------- интерфейс -----------------------------
pTop := NewPanel(Form,esRaised)^. SetAlign(caTop);
pTop^.Height := 35;

buOpen := NewButton(pTop,'show')^.SetAlign(caLeft);
buOpen^.OnClick := TOnEvent( MakeMethod( nil, @OpenPic ) );
SBox := NewScrollBoxEx(Form,esLowered)^.SetAlign(caClient);
PB := NewPaintBox(SBox);
PB^.OnPaint := TOnPaint( MakeMethod( nil, @DrawPaint ) );
PB^.OnPaint := TOnPaint( MakeMethod( nil, @DrawPaint ) );
// -------------------------------------------------------

run(Applet);

end.                


снова полезло "Runtime error 216"
причём что на КПК, что в эмуляторе проблема одинаковая.

WinCE 5.0  и там и там


Дмитрий Пырин   (2008-04-02 12:25:00) [12]

мда.. как говорится, "толи лыжи не едут, толи я..."

вот такой код:

{ KOL MCK } // Do not remove this line!
{$DEFINE KOL_MCK}
{$ifdef FPC} {$mode delphi} {$endif}
unit Unit1;

interface

uses Windows, Messages, KOL {place your units here->},ImageDecompress
{$IFDEF LAZIDE_MCK}, Forms, mirror, Classes, Controls, mckCtrls, mckObjs, Graphics;
{$ELSE} ; {$ENDIF}

type

 { TForm1 }

 {$I MCKfakeClasses.inc}
 {$IFDEF KOLCLASSES} TForm1 = class; PForm1 = TForm1; {$ELSE OBJECTS} PForm1 = ^TForm1; {$ENDIF CLASSES/OBJECTS}
 TForm1 = {$IFDEF KOLCLASSES}class{$ELSE}object{$ENDIF}({$IFDEF LAZIDE_MCK}TForm{$ELSE}TObj{$ENDIF})
   Button1: TKOLButton;
   ButtonForward: TKOLButton;
   ButtonBack: TKOLButton;
   Form: PControl;
   KOLForm1: TKOLForm;
   KOLProject1: TKOLProject;
   Memo1: TKOLMemo;
   PaintBox1: TKOLPaintBox;
   ProgressBar1: TKOLProgressBar;
   Image:PImageDecompress;
   procedure Button1Click(Sender: PObj);
   procedure PaintBox1Paint(Sender: PControl; DC: HDC);
 private
   { private declarations }
 public
   { public declarations }
 end;

var
 Form1 {$IFDEF KOL_MCK} : PForm1 {$ELSE} : TForm1 {$ENDIF} ;

{$IFDEF KOL_MCK}
procedure NewForm1( var Result: PForm1; AParent: PControl );
{$ENDIF}

implementation

{$IFDEF KOL_MCK}
{$I unit1_1.inc}
{$ENDIF}

{ TForm1 }

procedure TForm1.Button1Click(Sender: PObj);
begin
 image:=NewImageDecompress;
 image.LoadFromFile(ExtractFilePath(ParamStr(0))+'1.jpg');
end;

procedure TForm1.PaintBox1Paint(Sender: PControl; DC: HDC);
begin
 if (image.Bitmap <> nil) and not image.Bitmap.Empty then image.Bitmap.Draw(DC, 20, 20);
end;

initialization

end.  


не работает :(
не вылетает, но и не работает..


mdw   (2008-04-02 12:00:00) [13]

Попробовал, работает, скорее всего файл не находит, поэтому ничего не загружается, поэтому Bitmap = nil, поэтому и валится.

procedure TForm1.KOLFormFormCreate(Sender: PObj);
......
   FImg:= NewImageDecompress;
   FImg.LoadFromFile(ExtractFilePath(ParamStr(0))+'getImage.jpg');
...

procedure TTextOutForm.PaintBox1Paint(Sender: PControl; DC: HDC);
begin
   if (FImg.Bitmap <> nil) and not FImg.Bitmap.Empty then FImg.Bitmap.Draw(DC, 0, 0);
end;


Дмитрий Пырин   (2008-04-02 10:44:00) [14]

хм.. путь к файлу может меняться. никто ведь не знает, куда завтра мне взбредёт в голову положить программу и картинки. так что это не выход в любом случае, я думаю.


D[u]fa   (2008-04-02 10:29:00) [15]

может полный путь к картинке указать?


Дмитрий Пырин   (2008-04-02 08:58:00) [16]

хм.. удивительное рядом.
удалил PaintBox с формы, и бросил заново. на рантайм ругаться перестало, но картинку не показывает.
есть-ли какаято специфика работы с  LoadFromFile  в WinCE ?


Дмитрий К   (2008-04-02 08:37:00) [17]

а если так:
if Image <> nil then
 Image.Bitmap.Draw(DC, 0, 0);


Дмитрий Пырин   (2008-04-02 08:28:00) [18]

пардон :)

вот такой :


...
private
  Image:PImageDecompress;
...

procedure TForm1.Button1Click(Sender: PObj);
begin
image:=NewImageDecompress;
image.LoadFromFile('1.jpg');
end;

procedure TForm1.PaintBox1Paint(Sender: PControl; DC: HDC);
begin
Image.Bitmap.Draw(DC, 0, 0);
end;


пробовал  вставить   image:=NewImageDecompress;   до показа основной формы, тоже не помогает


Дмитрий Пырин   (2008-04-02 08:27:00) [19]

вот такой код :


...
 private
   Image:PImageDecompress;
...

procedure TForm1.Button1Click(Sender: PObj);
begin
 image.LoadFromFile('1.jpg');
 image:=NewImageDecompress;
end;

procedure TForm1.PaintBox1Paint(Sender: PControl; DC: HDC);
begin
Image.Bitmap.Draw(DC, 0, 0);
end;  


Дмитрий Пырин   (2008-04-02 07:55:00) [20]

При запуске под WinCE 5.0 (Aser n311)  при использовании  ImageDecompress
программа выдаёт
Runtime error 216
странно


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо