AGB  ·  Datenschutz  ·  Impressum  







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

canvas random paint

Ein Thema von Informatik_Doppelstundler · begonnen am 14. Jan 2006 · letzter Beitrag vom 19. Jan 2006
Antwort Antwort
Informatik_Doppelstundler

Registriert seit: 6. Dez 2005
11 Beiträge
 
#1

canvas random paint

  Alt 14. Jan 2006, 15:26
Hi. arbeite daserste mal mit canvas. soll jetzt ne figur (in diesem falle zur vereinfachunf nur ein rechteck) zufällig zeichnen lassen. dazu habe ich jetzt folgenden code geschrieben:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var x:integer;
var y:integer;
var Breite:integer;
var Hoehe:integer;
begin
 x:=random(450);
 y:=random(300);
 Breite:=x + random(120);
 Hoehe:=y + random(150);
 ImBild.Canvas.Rectangle(x,y,Breite,Hoehe);
end;
wenn ich jetzt auf button 2 (caption: RANDOM PAINT!) klicke, passiert gar nichts. warum?
ich habe mir schon gedacht, dass die zufallskoordinaten den punktes rechts unten möglicherweise kleiner sind, also über dem ausgangspunkt (x/y) liegen, deshalb habe ich halt
Delphi-Quellcode:
Breite:=[b]x[/b] + random(120);
 Hoehe:=[b]y[/b] + random(150);
eingebaut. bringt aber auch nichts
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#2

Re: canvas random paint

  Alt 14. Jan 2006, 15:38
Kann es vielleicht einfach sein, dass dein Image zu klein ist? Oder die Farbe des Stifts auf Weiss gesetzt wurde?
Der Code funktioniert so.

Delphi-Quellcode:
var x:integer;
var y:integer;
var Breite:integer;
var Hoehe:integer;
Du musst var nicht vor jede Zeile schreiben. So reicht es völlig:

Delphi-Quellcode:
var x:integer;
 y:integer;
 Breite:integer;
 Hoehe:integer;
 begin;
 ...

Zitat:
(caption: RANDOM PAINT!)
Wichtige Info
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von ---Bernhard---
---Bernhard---

Registriert seit: 26. Dez 2003
Ort: Abensberg
111 Beiträge
 
Delphi 2006 Professional
 
#3

Re: canvas random paint

  Alt 14. Jan 2006, 15:39
Hi!

Der Code ist eigentlich schon richtig. Aber als erstes solltest du ihn ordentlich formatieren!
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  x:integer;
  y:integer;
  Breite:integer;
  Hoehe:integer;
begin
  x:=random(450);
  y:=random(300);
  Breite:=x + random(120);
  Hoehe:=y + random(150);
  paintbox1.Canvas.Rectangle(x,y,Breite,Hoehe);
end;
Dann ruf im FormCreate "Randomize;" einmal auf, ansonsten schaut das Rechteck immer gleich aus!

Wenn es noch nicht geht, liegt es wohl an "ImBild". Was ist denn das für ein Typ/Komponente?
Bernhard Doll
Das Leben ist ein sch*** Spiel... aber eine super Grafik!!
http://www.doll-online.net
  Mit Zitat antworten Zitat
Informatik_Doppelstundler

Registriert seit: 6. Dez 2005
11 Beiträge
 
#4

Re: canvas random paint

  Alt 15. Jan 2006, 18:23
also das image ist auf keinen fall zu klein, und die stiftfarbe isn ganz normal (sieht man daran, dass die funktion von button 1 - ein haus zeichnen zu lassen mit entsprechender koordinateneingabe- einwandfrei funktioniert.)das mit dem var weiß ich schon, nur komm ich immer durcheinander, wann ich dann n simikolon setzen muss und wann nicht.. . .
also ImBild ist ein ganz gewöhnliches "Image" (unter zusätzlich..).
und das mit dem randomize aufrufen hab ich noch net verstanden
also einfach form create erstellen und randomize; reinschreiben?. Hab ich auf jeden Fall versucht, nur irgendwie fängt er noch nichtmal an das image sichtbar zu machen....da klappt irgendwie gar nichts
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#5

Re: canvas random paint

  Alt 15. Jan 2006, 18:29
Ich habe mal deinen Code ausprobiert und bei mor läuft es ohne Probleme.
Hast du schon mal probiert nur einen Button mit diesem Code und ein Image in ein ganz neues Projekt zu setzen?
Was hast du denn sonst noch in deinem Programm? Veränderst du irgendwo die Stiftfarbe? Der Code hier ist richtig, der Fehler muss an einer anderen Stelle liegen.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Informatik_Doppelstundler

Registriert seit: 6. Dez 2005
11 Beiträge
 
#6

Re: canvas random paint

  Alt 17. Jan 2006, 16:01
also ich habe noch nen zweiten button der auf das gleiche image zugreift, vielleicht liegts ja dadran, werd ich mal usprobieren

EDIT: Also komischerweise gehts jetzt, obwohl ich nichts anderes gemacht habe als den code zu kopieren.
Das Rechteck hab ich nu. Danke!
Hab aber noch ne Frage dazu: ich möchte nicht nur das rechteck, sondern ne art simples Haus zeichnen lassen. mein code sieht bisher so aus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  x:integer;
  y:integer;
  Breite:integer;
  Hoehe:integer;
  Spitze:integer;
begin
  x:=random(450);
  y:=random(300);
  Breite:=x + random(120);
  Hoehe:=y + random(150);
  Spitze:= (x + Breite)/2 ;
  paintbox1.Canvas.Rectangle(x,y,Breite,Hoehe);
  paintbox1.Canvas.MoveTo(x,y);
  paintbox1.Canvas.LineTo(x + Spitze);
Jetzt habe ich das Problem, dass er mir meldet: "Inkompatible Typen: Integer und Extended". Ich denke mal das liegt an dem "/2" bei "Spitze". Aber wie soll ich das denn sonst machen??
  Mit Zitat antworten Zitat
Benutzerbild von ---Bernhard---
---Bernhard---

Registriert seit: 26. Dez 2003
Ort: Abensberg
111 Beiträge
 
Delphi 2006 Professional
 
#7

Re: canvas random paint

  Alt 17. Jan 2006, 18:18
Benutz "div" anstatt "/" bei Integer.
Oder das Ergebniss durch "round()" runden lassen
Bernhard Doll
Das Leben ist ein sch*** Spiel... aber eine super Grafik!!
http://www.doll-online.net
  Mit Zitat antworten Zitat
Informatik_Doppelstundler

Registriert seit: 6. Dez 2005
11 Beiträge
 
#8

Re: canvas random paint

  Alt 19. Jan 2006, 13:41
ok, danke für die antworten, funzt alles. nur die koordinaten stimmen noch nicht so ganz...muss ich nochmal gucken.
  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 07:30 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