Конференция "KOL" » графика [kol_mck, Windows]
 
  • гоша (27.01.14 01:20) [0]
    объясните пожалуйста, что не так:

    procedure TForm1.FormClick(Sender: TObject);
    var x, y: integer;

    begin
       for x:=0 to Form.Width-1 do
         for y:=0 to Form.Height-1 do

     NewBitmap(200,200).canvas.pixels[ X, Y ]:=clRed;
     end;
  • thaddy © (27.01.14 17:25) [1]
    NewBitmap should be OUTSIDE of the loop.....
  • гоша (27.01.14 18:25) [2]
    thanks but not working,
    how?
    please help !
  • famrus (28.01.14 10:10) [3]
    program Project1;

    uses
     windows,messages,
     kol;

    {$R *.res}
    var
    form,button:PControl;
    BM:pbitmap;

    //область для процедур
    procedure clickbutton1(dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
    var x, y: integer;

    begin
    if BM = nil then Bm:=NewBitmap(200,200);

    with bm.canvas^ do
      for x:=0 to Form.Width-1 do
        for y:=0 to Form.Height-1 do
        pixels[ X, Y ]:=clRed;

    Bm.Draw(form.Canvas.Handle,0,0);
    end;

    Begin
    form:=NewForm(Applet,'шаблон').SetSize(300,240).setposition(330,300);
    Button:=NewButton(form,'Выполнить').SetSize(90,30).SetPosition(25,75);
    //.centeronparent.Tabulate;
    //область для работы

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

  • гоша (29.01.14 19:38) [4]
    большое спасибо)

    буду разбираться
  • гоша (29.01.14 20:45) [5]
    снова созрел вопрос - а как задать формат, к примеру:pf1bit
  • RusSun © (30.01.14 16:50) [6]
    Bmp.PixelFormat := pf1bit;

  • RusSun © (30.01.14 16:59) [7]
  • гоша (31.01.14 02:38) [8]
    Спасибки огромное
  • митя (26.08.14 18:57) [9]
    procedure TForm1.btnButton1Click(Sender: PObj);

    var
    x,y: Integer;
    begin
    Bm:=NewBitmap(Form.Width,Form.Height);

    NewBrush;

    Bm.Draw(form.Canvas.Handle,0,0);

    end;



    как выставить цвет бруша? - подскажите пожалуйста
  • RusSun © (27.08.14 08:55) [10]
  • Thaddy © (27.08.14 09:55) [11]
    var bmp:PBitmap;  //should be in form object or something; you should also free it somewhere.

    procedure TForm1.FormClick(Sender: TObject);
    var x, y: integer;
    begin
     if nor assigned(bmp) then  Bmp:=NewBitmap(200,200);
      for x:=0 to Form.Width-1 do
        for y:=0 to Form.Height-1 do
          bmp.canvas.pixels[ X, Y ]:=clRed;
    end;
  • митя (28.08.14 22:48) [12]
    var
     Bm:pbitmap;
    x,y: Integer;
    begin
    Bm:=NewBitmap(form.Width-1,form.Height-1);

       with bm.canvas^ do
    Ellipse(10, 10, 100, 100);

    //SetBkColor(form.canvas.Handle,$ffffff);
    Bm.Draw(form.Canvas.Handle,20,-1);
       bm.free;
    end;
    пока что получилось только это - не могу понять как избавиться от чёрного фона
  • RusSun © (29.08.14 19:12) [13]
    BM.Canvas.Brush.BrushStyle:=bsSolid;
    BM.Canvas.Brush.Color:=clBtnFace;
    BM.Canvas.FloodFill(0,0,clBtnFace,fsBorder);

  • RusSun © (29.08.14 19:16) [14]
    program Project1;

    uses
     windows,
     kol;

    {$R *.res}
    var
    form:PControl;
    fRgn:HRGN;
    fon:pBitmap;
    fon_:HBrush;
    //область для процедур
    procedure formPaint( Dummy: Pointer; Sender: PControl; DC: HDC );
    begin
    fon:=  NewBitmap( 0, 0 );
    try
    fon.LoadFromFile('Голубые кружева 16.bmp');
    fon_:=createPatternBrush(fon.Handle);
    FrameRgn (form.Canvas.Handle, fRgn,fon_,71,71);   // 2,2
    finally
    fon.Free;
    DeleteObject (fRgn);
    end;
    end;
    Begin
    form:=NewForm(Applet,'Brush paint').SetSize(250,250).setposition(330,300);
    fRgn := CreateEllipticRgn (0, 0, 200, 200);
    //.centeronparent.Tabulate;
    //область для работы

    form.OnPaint:=tonpaint(MakeMethod(nil,@formpaint));
    Run(form);

    end.

  • митя (29.08.14 23:22) [15]
    Спасибо Огромное Человеку под ником RusSun © , который всегда даёт внятные и чёткие ответы - побольше бы таких людей
  • митя (28.02.15 19:25) [16]
    Ещё один вопрос: как сделать чтобы нарисованное изображение не затиралось?
  • митя (13.06.15 00:06) [17]

    type co_ordinate = record
     x,y : integer;
    end;
    type scanline    = array[0..319] of byte;
    var
     pForm      : TForm1;
     Threshold  : integer;
     blobs      : array[0..5] of co_ordinate;
     Frame      : Cardinal;
     drawing    : boolean;
    implementation

    {$IF Defined(KOL_MCK)}{$ELSE}{$R *.DFM}{$IFEND}

    {$IFDEF KOL_MCK}
    {$I Unit1_1.inc}
    {$ENDIF}
    var bmp  : PBitmap;

    procedure TForm1.KOLFormFormCreate(Sender: PObj);
    var Temp : integer;
      pal  : PLogPalette;
      hpal : HPALETTE;
      x,y:Integer;
    begin
    frame     := 0;
     bmp := NewBitmap(form.Width,form.Height);
      bmp.PixelFormat:=pf8bit;

     bmp.width  := form.Width;
    bmp.height := form.Height;

     timer1.Enabled := true;

    end;

    procedure TForm1.Timer1Timer(Sender: PObj);
    var X_Loop, Y_Loop, I : integer;
       Value, t          : integer;
       Scan              : ^scanline;
    begin
    Frame := frame +1;
    if drawing = false then
    begin
     blobs[0].x := 160 + round(150 * SIN((2 * frame) * 0.01745329252222));
     blobs[0].y := 100 + round(90 * SIN((4 * frame) * 0.01745329252222));
     blobs[1].x := 160 + round(150 * SIN((6 * frame) * 0.01745329252222));
     blobs[1].y := 100 + round(90 * SIN((3 * frame) * 0.01745329252222));
     blobs[2].x := 160 + round(150 * SIN((7 * frame) * 0.01745329252222));
     blobs[2].y := 100 + round(90 * SIN((5 * frame) * 0.01745329252222));
     blobs[3].x := 160 + round(150 * SIN((3 * frame) * 0.01745329252222));
     blobs[3].y := 100 + round(90 * SIN((2 * frame) * 0.01745329252222));
     blobs[4].x := 160 + round(150 * SIN((4 * frame) * 0.01745329252222));
     blobs[4].y := 100 + round(90 * SIN((2 * frame) * 0.01745329252222));
     blobs[5].x := 160 + round(150 * SIN((2 * frame) * 0.01745329252222));
     blobs[5].y := 100 + round(90 * SIN((3 * frame) * 0.01745329252222));

     drawing := true;
     For Y_Loop := 0 to 239 do
     begin
       scan := Bmp.ScanLine[y_loop];
       for X_Loop := 0 to 319 do
       begin
         t := 0;
         For I := 0 to 5 do
         begin
           value := (Blobs[i].X-X_loop)*(Blobs[i].X-X_Loop);
           value := value + (Blobs[i].Y-Y_loop)*(Blobs[i].Y-Y_Loop);
           if value < 1 then value := 1;
           t := t+ (100000 div value);
         end;
         t := 255-t;
         if t < 0 then t := 0;
         Scan[x_loop] := t;
    {      if t >= 200 then scan[x_loop] := 0 else scan[x_loop] := 10;}
         // Bmp.Draw(form.Canvas.Handle,0,0);
       end;
     
     end;

     drawing := false;
     Bmp.Draw(form.Canvas.Handle,0,0);
    end;
    end;
    end.



    подскажите знающие люди: должен быть синий фон и красные блобы - цвет почемуто искажён, что не так?
  • Дмитрий К © (13.06.15 18:44) [18]
    Палитра не заполнена.
       for i := 0 to Bmp.DIBPalEntryCount - 1 do
         Bmp.DIBPalEntries[i] := RGB2BGR(RGB(255 - i, 0, 128 - i));

  • митя (15.06.15 14:09) [19]
    Спасибо тебе и ркепкого здоровья добрый человек - заработало )
 
Конференция "KOL" » графика [kol_mck, Windows]
Есть новые Нет новых   [134427   +26][b:0][p:0.004]