![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Где можно посмотреть пример работы с KOLJPGImage? [Lazarus, WinCE]
Дмитрий Пырин © (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
странно