Hallo allemaal,

In onderstaand programma worden kleurvlakken weergegeven. Zie de procedure hier onder. Onder alle omstandigheden moeten de 3 kleurvlakken altijd de zelfde kleur geven. Dat is nu niet het geval.
Hoe los je dit op?

Met een vriendelijke groet, Frans.

================================================== =======

Procedure
-----------

1. Button1
2. Button2
3. Button3
Er worden nu drie kleurvlakken weergegeven. De kleuren zijn allemaal gelijk aan
het kleurenvlak van Button1.
4 Hierna stap 5 uitvoeren.

5. Button4 ( Helderheid wordt met 50 verlaagt) Herhaal Button4 4 maal. Hederheid = 55
Herhaal de stappen 1, 2 en 3
Er worden nu drie kleurvlakken weergegeven. De kleuren zijn echter verschillend t.o.v
het kleurenvlak van Button1.


Code:
UNIT Unit1;

{$mode objfpc}{$H+}

INTERFACE

USES  Math, SysUtils, Forms, Controls, Graphics, ExtCtrls,
  StdCtrls, BGRABitmap, BGRABitmapTypes, BGRABlend,
  BGRAColorInt,
  BGRADefaultBitmap, BGRAFilters,
  BGRAMatrix3D,
  BGRAPen, BGRAPolygon,
  BGRAPolygonAliased, BGRAResample,
  BGRAText, BGRATextFX,
  BGRAThumbnail, Classes;


TYPE

  { TForm1 }

  TForm1 = CLASS(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Label1:  TLabel;
    Panel1:  TPanel;
    PROCEDURE Button1Click(Sender: TObject);
    PROCEDURE Button2Click(Sender: TObject);
    PROCEDURE Button3Click(Sender: TObject);
    PROCEDURE Button4Click(Sender: TObject);
    PROCEDURE FormCreate(Sender: TObject);
    PROCEDURE InitUndoRedo;
  PRIVATE

  PUBLIC

  END;

  TUndoRedo_01 = RECORD
    URBmp: TBGRABitmap;
  END;


VAR
  Form1: TForm1;
  FUndoRedo_01: ARRAY[1..10] OF TUndoRedo_01;
  Bmp:   TBGRABitmap;
  Helderheid: INTEGER;

IMPLEMENTATION

{$R *.lfm}

{ TForm1 }

PROCEDURE TForm1.FormCreate(Sender: TObject);
BEGIN
  InitUndoRedo;
  Helderheid := 255;
END;

PROCEDURE TForm1.InitUndoRedo;
VAR
  I: INTEGER;
BEGIN
  FOR I := 1 TO 10 DO
  BEGIN
    FUndoRedo_01[I].URBmp := TBGRABitmap.Create(1000, 1400, BGRA(0, 0, 0, 0));
  END;
END;

PROCEDURE TForm1.Button1Click(Sender: TObject);
VAR
  C: TColor;
  B, G, R: TColor;
BEGIN
  C   := clRed;
  B   := C.Blue;
  G   := C.Green;
  R   := C.Red;
  Bmp := TBGRABitmap.Create(100, 50, BGRA(R, G, B, Helderheid));
  Canvas.Draw(20, 50, Bmp.Bitmap);
  FUndoRedo_01[1].URBmp.Canvas.Draw(0, 0, Bmp.Bitmap);
END;

PROCEDURE TForm1.Button2Click(Sender: TObject);
BEGIN
  Bmp.Canvas.Draw(0, 0, FUndoRedo_01[1].URBmp.Bitmap);
  Canvas.Draw(20, 110, Bmp.Bitmap);
END;

PROCEDURE TForm1.Button3Click(Sender: TObject);
BEGIN
  Bmp.Assign(FUndoRedo_01[1].URBmp.Bitmap);
  Canvas.Draw(20, 170, Bmp.Bitmap);
END;

PROCEDURE TForm1.Button4Click(Sender: TObject);
BEGIN
  Dec(Helderheid, 50);
  Label1.Caption := 'Helderheid = ' + IntToStr(Helderheid);
  IF Bmp <> nil THEN Bmp := nil;
END;


END.