HiAsm - Конструктор программ

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



HiAsm NEW!

Сообщений 1 страница 4 из 4

1

Всё же таки удалось портировать модули от Delphi в HiAsm (уже и не помню сколько было попыток)
Работают в пакетах Delphi & FPC
Такие как SysUtis,Classes,Controls и многие другие.
Сейчас портировать компоненты из Delphi и Lazarus становится просто в разы легче.
Большое количество компонентов можно взять из CodeTyphon

Кому интересно подключайтесь, кто не умеет писать коды возможно  сможет найти достойный пример для порта в HiAsm

p.s будьте активней если хотите развитие конструктора иначе он просто заглохнет.

0

2

Для визуальных элементов наследников TGraphicControl был создан модуль KOLGraphicControl
Теперь достаточно в исходнике сменить имена подключаемых модулей с приставкой KOL и всё начинает работать :)
демка Ссылка
http://upforme.ru/uploads/001b/10/a7/2/298920.png

0

3

Тест модулей
Компонент с DirectX
Для jpg надо подпиливать
Демка Ссылка

Под FPC собирается но не работает :) Нужно что то подправить.

http://upforme.ru/uploads/001b/10/a7/2/405742.png

0

4

Демка Ссылка

Итак модуль легко доработать для поддержки jpg и других форматов которые поддерживает OleLoadPicture
в uses добавим ActiveX

перекроем класс

Код:
  TPicture = class(KOLGraphics.TPicture)
    public
      procedure LoadFromFile(const Filename: string);
  end;

Ну и сама реализация

Код:
function CreateBitmapFromFile(FileName: String): KOLGraphics.TBitmap;
var
  FPicture: IPicture;
  hFile: THandle;
  dwSize: DWORD;
  hBuffer: Cardinal;
  pBuffer: Pointer;
  dummy: Cardinal;
  pStream: IStream;

  function GetMMWidth(): Integer;
  begin
    Result:=0;
    FPicture.get_Width(Result);
  end;

  function GetMMHeight(): Integer;
  begin
    Result:=0;
    FPicture.get_Height(Result);
  end;

  function GetWidth(): Integer;
  var
    dc: HDC;
  begin
    dc:=GetDC(0);
    Result:=MulDiv(GetMMWidth, GetDeviceCaps(dc, LOGPIXELSX), 2540);
    ReleaseDC(0, dc);
  end;

  function GetHeight(): Integer;
  var
    dc: HDC;
  begin
    dc:=GetDC(0);
    Result:=MulDiv(GetMMHeight, GetDeviceCaps(dc, LOGPIXELSY), 2540);
    ReleaseDC(0, dc);
  end;

  function GetPalette(): HPALETTE;
  var
    Handle: OLE_HANDLE;
  begin
    FPicture.get_hPal(Handle);
    Result:=HPALETTE(Handle);
  end;

begin
  Result := KOLGraphics.TBitmap.Create;
  hFile:=CreateFile(PChar(FileName),
    GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0
  );
  if hFile<>INVALID_HANDLE_VALUE then
  begin
    dwSize := GetFileSize(hFile, nil);
    hBuffer := GlobalAlloc(GMEM_MOVEABLE, dwSize);
    pBuffer := GlobalLock(hBuffer);
    ReadFile(hFile, pBuffer^, dwSize, dummy, nil);
    GlobalUnlock(hBuffer);
    CreateStreamOnHGlobal(hBuffer, True, pStream);
    //OleCheck(OleLoadPicture(pStream, 0, True, IPicture, FPicture));
    OleLoadPicture(pStream, 0, True, IPicture, FPicture);
    GlobalFree(hBuffer);
    Result.Width:=GetWidth;
    Result.Height:=GetHeight;
    //Result.Palette:=GetPalette;
    FPicture.Render(Result.Canvas.Handle,
      0, 0, GetWidth, GetHeight,
      0, GetMMHeight-1, GetMMWidth, -GetMMHeight,
      MakeRect(0, 0, GetWidth, GetHeight));
    CloseHandle(hFile);
  end;
end;

procedure TPicture.LoadFromFile(const Filename: string);
begin
  Bitmap := CreateBitmapFromFile(Filename);
end;

ну и результат
http://upforme.ru/uploads/001b/10/a7/2/246321.png

0



Рейтинг форумов | Создать форум бесплатно