AGB  ·  Datenschutz  ·  Impressum  







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

Diagonales Raster zeichnen

Ein Thema von hansklok · begonnen am 28. Mär 2020 · letzter Beitrag vom 28. Mär 2020
Antwort Antwort
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#1

Diagonales Raster zeichnen

  Alt 28. Mär 2020, 10:53
Hallo,

ich habe ein vergebenes Rect (Bereich), den ich gern mit einem diagonalen Raster füllen möchte. Der gesamte Bereich soll damit ausgefüllt sein. Gibt es einen einfachen Algorithmus, der dies in zwei Schleifen zuverlässig tut? Wie sieht dieser aus? Vermutlich muss man der Zeichenbereich clippen.
Miniaturansicht angehängter Grafiken
k0snq7w.jpg  

Geändert von hansklok (28. Mär 2020 um 10:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.135 Beiträge
 
Delphi 12 Athens
 
#2

AW: Diagonales Raster zeichnen

  Alt 28. Mär 2020, 11:40
Delphi-Referenz durchsuchenTBrush.Style ?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#3

AW: Diagonales Raster zeichnen

  Alt 28. Mär 2020, 11:43
Ja, das kenne ich. Ich möchte es aber gern selbst programmieren.
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Diagonales Raster zeichnen

  Alt 28. Mär 2020, 12:02
Hi hansklok

Schau dir doch mal das an:
https://www.delphipraxis.net/109527-...-zeichnen.html
https://www.delphipraxis.net/128983-...-erzeugen.html
https://www.delphipraxis.net/128617-...eser-code.html
Die Diagonale erreichst du, indem du die einzelnen Rasterpunkt gegeneinander versetzt.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#5

AW: Diagonales Raster zeichnen

  Alt 28. Mär 2020, 12:26
Die Diagonale erreichst du, indem du die einzelnen Rasterpunkt gegeneinander versetzt.
Hi Delbor,

danke für Deinen Beitrag. Wie müsste ich diesen Code hier modifizieren, damit die Rasterpunkte gegeneinander versetzt werden?
Delphi-Quellcode:
for rx := 0 to (img_main.Width div gridsize) do
  for ry := 0 to (img_main.Height div gridsize) do
    img_main.Canvas.Pixels[rx*gridsize,ry*gridsize] := clGrey;
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

AW: Diagonales Raster zeichnen

  Alt 28. Mär 2020, 14:43
ein horizontales/vertikales Raster besteht aus Linien, bei denen entweder alle X gleich sind (vertikale Linien), oder alle Y.

Solange es immer ein 45° Winkel sein soll, gilt für das diagonale Raster: Es gibt Linien bei denen X+Y gleich ist (Diagonale von links unten nach rechts oben) und solche bei denen X-Y gleich ist (andere Richtung)

Also ganz einfacher Fall: Die beiden Linien X+Y = 100 und X-Y = 10 ergeben schon mal 2 Linien die sich kreuzen. Für mehr Linien brauchst du entsprechend viele Werte, also zum Beispiel alle durch 10 teilbaren.

Das kannst du also in deine Scheife packen: Ein Pixel ist dann schwarz, wenn X+Y mod 10 = 0 oder wenn X-Y mod 10 = 0 ist.
  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 13:43 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