Конференция "KOL" » Как изменить комп-т (для отображения ИЗО в Png формате) [Delphi, Windows]
 
  • RusSun © (20.03.17 21:01) [0]
    Доброе время суток, всем привет!
    Вопрос:
    Как изменить комп-т TKOLImageShow(для отображения ИЗО в Png формате)
    или как реализовать в программе?
    Что есть:

    program Project1;

    uses kol,windows;

    {$R *.res}
    var
    form,button:PControl;
    Plan: TKOLImageShow;
    Fon:TKOLImageList;

    procedure clickbutton1(dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
    begin
    //Msgok('');
      Plan.Canvas.RequiredState( brushvalid );
       Plan.Canvas.Brush.Color := $00DCDC78;
       Plan.Canvas.FillRect(MakeRect(0,0,15,450));
    end;
    procedure PlanPaint(dummy:pointer;Sender: PControl; DC: HDC);
    var i:byte;
    begin
       Plan.Canvas.RequiredState( brushvalid );
       Plan.Canvas.Brush.Color := $00DCDC78;
       Plan.Canvas.FillRect(MakeRect(0,0,725,450));

    { for i := 1 to  22 do  //22
       begin
       PB.DrawTransparent(Plan.Canvas.handle, px1[i],py1[i],$FFFFFF);
       PJ.DrawTransparent(Plan.Canvas.handle, px2[i],py2[i],$FFFFFF)
       end;  }

       Plan.Update;
       Plan.Invalidate;
    end;

    Begin
    form:=NewForm(Applet,'шаблон').SetclientSize(736, 534).setposition(330,300);
    Form.Color := TColor($DCDC78);
    (*Result.*)Form.Font.FontHeight := -11;
    Form.Font.FontName := 'MS Sans Serif';
    Form.Border := 0;

    Button:=NewButton(form,'Выполнить').SetSize(90,30).SetPosition(25,432);

    Fon := NewImageList( Form );
    Fon.Colors := ilcColor24;
    Fon.ImgWidth := 623;
    Fon.ImgHeight := 347;
    {$R Form1_Fon.res}
    Fon.AddMasked( LoadBmp32( hInstance, 'FORM1_FON', Fon ), $5F89BE );

    Plan := NewImageShow(Form, Fon, 0 ).SetPosition( 51, 51 ).SetSize( 623, 347 );
    Plan.HasBorder := TRUE;
    Plan.Color := TColor($4571A7);
    //Plan.OnPaint :=TOnPaint(MakeMethod(nil,@PlanPaint));
    //.centeronparent.Tabulate;
    //область для работы

    Applet := NewApplet('');
    Button.OnClick:=TonEvent(MakeMethod(nil,@clickbutton1));
    Run(form);

    end.




    program Project1;

    uses
    Windows,KOL,KOLPng,KOLZLib;
    {$R *.res}
    {$R Make_png.RES}
    type
    PForm1 = ^TForm1;
    TForm1 = object(TObj)
      Form: PControl;  //,Button1
       Fond: pControl;      //NewPaintBox
    public
     //procedure Button1Click(Sender: PObj);
     procedure fondPaint(Sender: PControl; DC: HDC );
    end;

    var
    Form1: PForm1;
    png:PPngObject;

    procedure TForm1.fondPaint(Sender: PControl; DC: HDC );
    begin
    if png <> nil then png.Draw(Fond.Canvas.Handle,0,0) else exit
    end;

    {procedure TForm1.Button1Click(Sender: PObj);
    begin

    end;}


    procedure NewForm1(var Result: PForm1; AParent: PControl);
    begin
    New(Result, Create);
    with Result^ do
    begin
      Form := NewForm(AParent, 'Resurs Fanorona');
      Form.Add2AutoFree(Result);
      Applet := Form;

      if png = nil then png :=NewPngObject;

      png.LoadFromResourceName(HInstance,'img');

      Form.SetClientSize(png.Width, png.Height).CenterOnParent;
      Result.Fond := NewPaintBox( Form ).SetPosition( 0, 0 ).SetSize( 320, 240 ).SetBorder( 2);
             Result.Fond.HasBorder := TRUE;
       Result.Fond.OnPaint :=FondPaint;

        Fond.Height:=png.Height;
        Fond.Width:=png.Width;

      (* Button1 := NewButton( Form, 'Click' ).SetPosition( 22, 8 ).SetSize( 0, 26 );
           {$IFDEF UNICODE_CTRLS}
       Button1.SetUnicode(TRUE);
           {$ENDIF UNICODE_CTRLS}
       Button1.OnClick := Button1Click; *)


    end;
    end;

    begin
    NewForm1(Form1, nil);
    Run(Form1.Form);
    end.


    Для чего имеется план использовать:
    хотелось бы совместить отрисовку и перемещение объекта.
  • RusSun © (22.03.17 18:53) [1]
    Задумка такая хочу переписать следующее на KOL:
    https://yadi.sk/d/p3uLVYJw3GFZwr
    Вот попытка не совсем удачная:
    https://yadi.sk/d/mwScXqQN3GFag6
    Дело в том, что основной размер идет от "веса" игрового поля.
    Есть и другие вопросы, но пока руки до этого не дошли.)
  • DKOL (23.03.17 11:56) [2]
    RusSun, несколько раз перечитал первое сообщение, но так и не понял в чем проблема...


    > TKOLImageShow(для отображения ИЗО в Png формате)

    Что есть ИЗО?

    Хотите юзать не bmp, а png? И зачем именно TKOLImageShow?
  • RusSun © (23.03.17 19:02) [3]
    ИЗО -изображение в данном случае png формате.

    Хотите юзать не bmp, а png? так он меньше "весит"+ не лостлесс по сравнению с jpeg.
    TKOLImageShow как пример, нужно просто загрузить и чтобы отрисовка работала сама.
  • DKOL (24.03.17 07:17) [4]
    Тогда все просто. Ипользуем KOLPng.PPngObject + TKOLPaintBox, код такой:


    //...
    pntPNG: TKOLPaintBox;
    //...

    procedure TForm1.KOLFormFormCreate(Sender: PObj);
    var
     png: PPngObject;
    begin
     png := NewPngObject;
     if png.LoadFromFile(GetStartDir + 'Tablo.png') then
       pntPNG.CustomObj := png
     else
       png.Free;
    end;

    procedure TForm1.pntPNGPaint(Sender: PControl; DC: HDC);
    begin
     if Assigned(Sender.CustomObj) then
       PPngObject(Sender.CustomObj).Draw(DC, 0, 0);
    end;



    CustomObj - использую для примера универсальности, каждому TKOLPaintBox можно будет привязать свой png.

    ps: если надо еще меньше размер - то надо отказаться от KOLPng, в пользу tinyJPGGIFBMP\tinyPNG\или подобного
 
Конференция "KOL" » Как изменить комп-т (для отображения ИЗО в Png формате) [Delphi, Windows]
Есть новые Нет новых   [134427   +34][b:0][p:0.003]