Changeset 10 for trunk/UGraphic.pas


Ignore:
Timestamp:
Sep 22, 2014, 3:07:02 AM (10 years ago)
Author:
chronos
Message:
  • Added: Zooming and moving image.
  • Added: Color format 4-bit gray.
  • Added: Image operation for generating test gradient image.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/UGraphic.pas

    r9 r10  
    7272  public
    7373    function GetDataSize: Integer;
    74     procedure PaintToCanvas(Canvas: TCanvas);
     74    procedure PaintToCanvas(Canvas: TCanvas; Rect: TRect);
    7575    procedure Clear;
    7676    procedure Random;
     77    procedure Gradient;
    7778    procedure Flip;
    7879    procedure Mirror;
     
    435436end;
    436437
    437 procedure TGBitmap.PaintToCanvas(Canvas: TCanvas);
     438procedure TGBitmap.PaintToCanvas(Canvas: TCanvas; Rect: TRect);
    438439var
    439440  X, Y: Integer;
     
    442443  try
    443444  Canvas.Lock;
    444   for Y := 0 to Size.Y - 1 do
    445     for X := 0 to Size.X - 1 do begin
     445  for Y := Rect.Top to Rect.Bottom - 1 do
     446    for X := Rect.Left to Rect.Right - 1 do
     447    if (X >= 0) and (X < Size.X) and (Y >= 0) and (Y < Size.Y) then begin
    446448      Pixel := Pixels[X, Y];
    447       Canvas.Pixels[X, Y] := Pixel.ToTColor;
     449      Canvas.Pixels[X - Rect.Left, Y - Rect.Top] := Pixel.ToTColor;
    448450      Pixel.Free;
    449451    end;
     
    475477    for X := 0 to Size.X - 1 do begin
    476478      Color.FromTColor(System.Random($ffffff));
     479      F := Cardinal(Color.Data.GetInteger);
     480
     481      Pixels[X, Y] := Color;
     482    end;
     483  Color.Free;
     484end;
     485
     486procedure TGBitmap.Gradient;
     487var
     488  X, Y: Integer;
     489  Color: TGColor;
     490  F: Cardinal;
     491  N: Integer;
     492begin
     493  Color := TGColor.Create;
     494  Color.Format := ColorFormat;
     495  for Y := 0 to Size.Y - 1 do
     496    for X := 0 to Size.X - 1 do begin
     497      if Y < Size.Y div 4 then N := $000001
     498      else if Y < Size.Y div 4 * 2 then N := $000100
     499      else if Y < Size.Y div 4 * 3 then N := $010000
     500      else N := $010101;
     501
     502      Color.FromTColor(N * (X * 255 div Size.X));
    477503      F := Cardinal(Color.Data.GetInteger);
    478504
Note: See TracChangeset for help on using the changeset viewer.