AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Punkte in einer Paintbox beschriften?!

Ein Thema von fabiO · begonnen am 1. Jun 2005 · letzter Beitrag vom 2. Jun 2005
Antwort Antwort
fabiO

Registriert seit: 5. Dez 2004
Ort: Jena
41 Beiträge
 
Delphi 6 Personal
 
#1

Punkte in einer Paintbox beschriften?!

  Alt 1. Jun 2005, 20:07
Hallo,

Ich habe in der Schule eine Aufgabe bekommen, dass ich in einer Paintbox 4 Zufällig positionierte Ellipsen eintragen soll, die 1. halt eine unterschiedliche Lage besitzen, 2. eine unterschiedliche Farbe und 3. deren Bezeichnung unter ihnen erscheint.

Die ersten 2 Aufgaben habe ich gelöst, doch bei der 3ten tappe ich im Dunkeln.

Ich habe es mit einem Label versucht, doch das wird nich angezeigt, oder vielleicht auch von der Paintbox überdeckt, ich weiss es leider nicht.

Hier ma mein Quelltext:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;

type
  TPoint = Record
    x,y : LongInt;
    end;
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Karte : array[1..4] of TPoint;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var x,y,z : Integer;
    ortsname : TLabel;
begin
  Paintbox1.Refresh;
  Randomize;
  For z := 1 to 4 do
    begin
      x := Karte[z].x;
      y := Karte[z].y;
      x := Random(Paintbox1.Width);
      y := Random(Paintbox1.Height);
      PaintBox1.Canvas.Pen.Color := RGB(random(256), random(256), random(256));
      PaintBox1.Canvas.Ellipse(x-2,y-2,x+2,y+2);
      Ortsname := TLabel.Create(Self);
      Ortsname.Caption := ('Ort ' + IntToStr(z));
      Ortsname.Top := y+5;
      Ortsname.Left := x+5;
    end;
end;

end.
Wäre nett wenn mir einer auf die sprünge helfen könnte.

Gruss fabiO
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Punkte in einer Paintbox beschriften?!

  Alt 1. Jun 2005, 20:20
Versuch es mal mit Delphi-Referenz durchsuchenTCanvas.TextOut.

Und wenn du es trotzdem mit deinem TLabel machen willst, dann setzt mal den Parent und setze es mit Delphi-Referenz durchsuchenBringtoFront in den Vordergrund. Desweiteren würde ich auf ein Bitmap im Speicher zeichnen und es bei bedarf, wenn sich was geändert hat oder wenn die Paintbox neugezeichnet werden muss (Delphi-Referenz durchsuchenOnPaint), auf den Canvas der Paintbox kopieren mit BitBlt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: Punkte in einer Paintbox beschriften?!

  Alt 1. Jun 2005, 20:59
Zitat:
Delphi-Quellcode:
type
  TPoint = Record
    x,y : LongInt;
    end;
TPoint musst du nicht selbst deklarieren, einfach die Unit Types einbinden. Desweiteren sollte randomize nur einmal im Programm aufgerufen werden, also am besten im OnCreate . Und nicht vergessen, das Label wieder freizugeben
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Punkte in einer Paintbox beschriften?!

  Alt 2. Jun 2005, 14:44
Zitat von fabiO:
Ich habe es mit einem Label versucht, doch das wird nich angezeigt, oder vielleicht auch von der Paintbox überdeckt, ich weiss es leider nicht.
[...]
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var x,y,z : Integer;
    ortsname : TLabel;
begin
  Paintbox1.Refresh;
  Randomize;
  For z := 1 to 4 do
    begin
      x := Karte[z].x;
      y := Karte[z].y;
      x := Random(Paintbox1.Width);
      y := Random(Paintbox1.Height);
      PaintBox1.Canvas.Pen.Color := RGB(random(256), random(256), random(256));
      PaintBox1.Canvas.Ellipse(x-2,y-2,x+2,y+2);
      Ortsname := TLabel.Create(Self);
      Ortsname.Caption := ('Ort ' + IntToStr(z));
      Ortsname.Top := y+5;
      Ortsname.Left := x+5;
    end;
end;
Das Label wird dir nicht angezeigt, weil es nur innerhalb der ButtonClick Prozedur existiert!
Du musst das Label als Variable der Form deklarieren.
Und wie Khabarakh schon sagte, musst du das Label auch wieder freigeben!;

Viele Grüße, Benjamin
Benjamin
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#5

Re: Punkte in einer Paintbox beschriften?!

  Alt 2. Jun 2005, 14:52
falsch, das Label wird nicht angezeigt, weil es kein "Parent" zugeordnet bekommen hat... bzw nur teilweise...

versuch mal "Label.Parent := PaintBox1;" nachdem dus erzeugt hast.......



aber wie Luckie schon gesagt hat, solltest das ganze mit TextOut machen, das spart ne ganze menge arbeit
  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 21:03 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