AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Blätter auf einem Stapel zeichnen
Thema durchsuchen
Ansicht
Themen-Optionen

Blätter auf einem Stapel zeichnen

Ein Thema von toms · begonnen am 5. Okt 2003 · letzter Beitrag vom 5. Okt 2003
Antwort Antwort
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#1

Blätter auf einem Stapel zeichnen

  Alt 5. Okt 2003, 09:50
Hi!

Für ein Vokabelprogramm möchte ich "Blätter auf einem Stapel" (Karteikasten)
zeichnen. (Siehe Bild in der Anlage oder hier.

Ich brauche als eine Funktion, welche mir X Blätter auf einem
Stapel zeichnet.

Vielleicht hat ja jemand lust, mir eine solche Procedure zu schreiben.

Hier mal das Grundgerüst:

Delphi-Quellcode:
procedure ZeichneStapel(Image: TImage; AnzahlBlaetter: Integer);
begin
  // Zeichne Kasten unten
  // Code...

  // Zeichne Blätter
  for i := 1 to AnzahlBlaetter do
  begin
     // Code...
  end;
end;
Miniaturansicht angehängter Grafiken
vokabelpile.jpg  
Thomas
  Mit Zitat antworten Zitat
imp

Registriert seit: 5. Mai 2003
25 Beiträge
 
#2

Re: Blätter auf einem Stapel zeichnen

  Alt 5. Okt 2003, 11:36
Ich würd dir vorschlagen 3 Vierecke zu zeichnen (eins für Vorderseite, oberstes Blatt und linke Seite) und dann n-mal einen Strich zur Andeutung eines Blattes.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: Blätter auf einem Stapel zeichnen

  Alt 5. Okt 2003, 20:55
Danke für deine Antwort!
Hab's nun mit Polygons gezeichnet.
Sieht für den Anfang nicht schlecht aus. Siehe Anlage.

Jetzt hab ich noch das Problem, daß der Hintergrund weiß gezeichnet wird.
Es bringt auch nichts, den Brush.Style auf bsClear zu setzen oder SetBkMode aufzurufen.

Delphi-Quellcode:
procedure TForm1.DrawPile(AImage : TImage; iNumCards : Integer);
const
  x1 = 10;
  y1 = 100;
var
  x2, dx, y2 : Integer;
  y2_temp, y1_temp : Integer;
  pts : array [0..3] of TPoint;
begin
  dx := 4;
  y2 := y1 - 10;
  x2 := x1 + 30;
  y2_temp := y2;
  y1_temp := y1;
  AImage.Picture := nil;
  AImage.Canvas.Brush.Color := clYellow;
  AImage.Canvas.Pen.Color := clBlack;
  AImage.Canvas.FillRect(AImage.BoundsRect);
  // SetBkMode(AImage.Canvas.Handle, TRANSPARENT);
  // AImage.Canvas.Brush.Style := bsClear;
  repeat
    pts[0] := Point(x1, y1_temp);
    pts[1] := Point(x1 - dx, y2_temp);
    pts[2] := Point(x2 - dx, y2_temp);
    pts[3] := Point(x2, y1_temp);
    AImage.Canvas.Polygon(pts);
    dec(y2_temp, 2);
    dec(y1_temp, 2);
  until (y2_temp = y2 - (2 * iNumCards)) or (iNumCards = 0);
end;
Angehängte Grafiken
 
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz