![]() |
Hilfe! Rechtecke im Imagefenster
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo
Hoffe, schreibe hier nicht in den falschen zweig... Vielleicht kann mir jemand von euch helfen. Ich kenne mich nicht so gut mit delphi aus, muss aber bis nächsten Montag folgendes programmieren: In einem leeren image-fenster soll auf einen buttonklick das hier entstehen: (siehe Anhang) vier rechecke ineinander... wo jeweils das innere mit den ecken, dieseiten des äußeren halbiert, aber trotzdem innerhalb bleibt, also kleiner ist... kann das jemand von euch? Lg Chic |
Re: Hilfe!!! Kann mir jemand helfen?!
Herzlich willkommen in der dp :dp:
Könntest du deinem Beitrag bitte einen aussagekräftigen Titel geben? (Einfach http://www.delphipraxis.net/template.../icon_edit.gif benutzen) |
Re: Hilfe!!! Kann mir jemand helfen?!
Zitat:
Und du solltest es auch können. Zeichnen kannst du mit den Zeichenfunktionen von TCanvas und der Rest ist ja nur Mathematik |
DP-Maintenance
Dieses Thema wurde von "SirThornberry" von "Sonstige Fragen zu Delphi" nach "VCL / WinForms / Controls" verschoben.
|
Re: Hilfe!!! Kann mir jemand helfen?!
Hi,
so könnte man es machen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Size, HalfSize, iLeft, iTop: integer; procedure Draw2Rect; begin Image1.Canvas.Polyline([Point(0, 0), Point(Size, 0), Point(Size, Size), Point(0, Size), Point(0, 0)]); Image1.Canvas.Polyline([Point(HalfSize, 0), Point(Size, HalfSize), Point(HalfSize, Size), Point(0, HalfSize), Point(HalfSize, 0)]); end; begin Size := 100; iLeft := (Image1.Width - Size) div 2; iTop := (Image1.Height - Size) div 2; HalfSize := Size div 2; SetViewportOrgEx(Image1.Canvas.Handle,iLeft, iTop, nil); Draw2Rect; Size := HalfSize; HalfSize := Size div 2; SetViewportOrgEx(Image1.Canvas.Handle,iLeft + HalfSize, iTop + HalfSize, nil); Draw2Rect; SetViewportOrgEx(Image1.Canvas.Handle, 0, 0, nil); end; |
Re: Hilfe!!! Kann mir jemand helfen?!
Das klingt mir verdächtig nach Hausaufgabenerledigungsmaschiene .. :warn:
|
Re: Hilfe!!! Kann mir jemand helfen?!
Ja ist mir schon klar, aber ich hatte gerade Lust dazu.
|
Re: Hilfe!!! Kann mir jemand helfen?!
Oder einfach mal rekursiv (die Aufgabe schreit ja geradezu danach):
Delphi-Quellcode:
Selbst wenn man das abtippt, hat man noch Einiges zu tun. Und vor allen Dingen dann, wenn der Lehrer wissen will, wie es funktioniert...
Procedure RechteckImRechteck (P1,P2,P3,P4 : TPoint; Ebene : Cardinal);
Begin If Ebene = 1 Then ZeichneReckeck (P1,P2,P3,P4) // Das muss man selbst programmieren Else RechtEckImRechteck ( Point ((P1.x+P2.x)/2, (P1.y+P2.y)/2), Point ((P2.x+P3.x)/2, (P2.y+P3.y)/2), Point ((P3.x+P4.x)/2, (P3.y+P4.y)/2), Point ((P4.x+P1.x)/2, (P4.y+P1.y)/2) Ebene - 1); End; ... RechtEckImRechtEck (P1,P2,P3,P4,4); // Zeichnet 4 ineinander verschachtelte Rechtecke ... |
Re: Hilfe!!! Kann mir jemand helfen?!
Zitat:
|
Re: Hilfe!!! Kann mir jemand helfen?!
Zitat:
|
Re: Hilfe! Rechtecke im Imagefenster
hallo
danke für die hilfe... gerade bei den mathematischen sachen scheiters bei mir. manchmal ist auch so, dass ich es sehe und dann denke, man da hättest du gleich drauf kommen müssen... aber in diesem fall hatte schon wieder einen komplett anderen ansatz. der war zwar nicht falsch, aber ich bin nicht weitergekommen. danke nochmal lg |
Re: Hilfe! Rechtecke im Imagefenster
Muss die Prozedur von alzaimar nicht so aussehen?
Delphi-Quellcode:
Davor wurde nämlich nur das letzte Rechteck gezeichnet.
Procedure RechteckImRechteck (P1,P2,P3,P4 : TPoint; Ebene : Cardinal);
Begin If Ebene > 1 Then RechtEckImRechteck ( Point ((P1.x+P2.x)/2, (P1.y+P2.y)/2), Point ((P2.x+P3.x)/2, (P2.y+P3.y)/2), Point ((P3.x+P4.x)/2, (P3.y+P4.y)/2), Point ((P4.x+P1.x)/2, (P4.y+P1.y)/2) Ebene - 1); ZeichneReckeck (P1,P2,P3,P4) // Das muss man selbst programmieren End; ... RechtEckImRechtEck (P1,P2,P3,P4,4); // Zeichnet 4 ineinander verschachtelte Rechtecke ... Flare |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz