Einzelnen Beitrag anzeigen

w3seek
(Gast)

n/a Beiträge
 
#10

Re: Farbdreieck mit Delphi6 Professional programmieren

  Alt 26. Jun 2004, 19:31
Ein Farbdreieck kannst du mit GradientFill() realisieren, allerdings sind da nicht alle Farben vorhanden die es gibt, man kann ein Triangle festlegen und jeder Ecke eine Farbe zuweisen. Geht aber nur ab Win2000 und Win98.

Delphi-Quellcode:
function GradientFill(hdc: HDC; pVertex: PTriVertex; dwNumVertex: DWORD; pMesh: Pointer; dwNumMesh: DWORD; dwMode: DWORD): Boolean; stdcall; external 'gdi32.dllname 'GdiGradientFill';

type
  PTRIVERTEX = ^TTRIVERTEX;
  TTRIVERTEX = packed record
    x, y: Integer;
    Red, Green, Blue, Alpha: Word;
  end;

{$R *.dfm}

procedure TForm1.FormPaint(Sender: TObject);
const
  VertexCount = 3;
var
  Vertex: array[0..VertexCount - 1] of TTriVertex;
  Triangle: TGradientTriangle;
begin
  // Punkt 1
  Vertex[0].x := 10;
  Vertex[0].y := 10;
  Vertex[0].Red := $FF00; // 255 shl 8, siehe beschreibung im PSDK
  Vertex[0].Green := 0;
  Vertex[0].Blue := 0;
  Vertex[0].Alpha := 0;
  // Punkt 2
  Vertex[1].x := 200;
  Vertex[1].y := 150;
  Vertex[1].Red := 0;
  Vertex[1].Green := $FF00; // 255 shl 8, siehe beschreibung im PSDK
  Vertex[1].Blue := 0;
  Vertex[1].Alpha := 0;
  // Punkt 3
  Vertex[2].x := 50;
  Vertex[2].y := 200;
  Vertex[2].Red := 0;
  Vertex[2].Green := 0;
  Vertex[2].Blue := $FF00; // 255 shl 8, siehe beschreibung im PSDK
  Vertex[2].Alpha := 0;
  // Ein Triangle aus den 3 punkten erstellen
  Triangle.Vertex1 := 0;
  Triangle.Vertex2 := 1;
  Triangle.Vertex3 := 2;
  // Zeichnen
  GradientFill(Canvas.Handle, @Vertex[0], VertexCount, @Triangle, 1, GRADIENT_FILL_TRIANGLE);
end;
  Mit Zitat antworten Zitat