Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge

Fragen von Fernando (verbesserte Fragenstellung)

Fernando1 / 2 Antworten / Flachansicht Nickles

Hallo,

vielleicht waren meine Fragen sprachlich nicht verständlich.

Deswegen schreibe ich es noch mal.


Meine aktuellen Fragen folgt es so:

1. Erste Aufgabenstellung:

Nachdem das Bild in ein Schwarz-Weißbild umgewandelt wurde, soll es möglich sein die schwarzen Flächen zu löschen. Dazu muss auf die schwarzen Flächen geklickt werden. Es erscheint ein Bestätigungsfenster mit folgender Frage: Soll die ausgewählte Fläche wirklich gelöscht werden?

„Ja oder Nein“

Betätigung der Schaltfläche „Ja“ wird die schwarze Fläche gelöscht. Bei Betätigung der Schaltfläüche „Nein“ wird die Fläche nicht gelöscht.

2. Zweite Aufgabenstellung:

Zuerst habe ich den Flächeninhalt der schwarzen Fläche in µm² berechnet. Anschließend wurde der Radius einer dazu gleich großen Kreisfläche berechnet.

Die aktuelle Fragestellung ist nun die nach dem minimalen und maximalen Radius der schwarzen Fläche. Beide müssen jeweils berechnet und in der Spalte der Tabelle ausgegeben werden.

Im Anhang auf der folgenden Internet-Seite unter dem Name „Fernando-Aufgabe“ sind als .zip Datei mein bis jetzt erledigtes Programm mit dem Bild zum Bearbeiten
(Bild unter Name „Bild“).

http://rapidshare.com/files/482896/Fernando-Aufgabe.zip.html

und bitte danach klick auf „free“ in Tabelle, um die Datei zu herunterladen.

Wenn man mir dabei helfen will und etwas nicht gut versteht, dann bitte gib mir sofort Bescheid auf meine folgende e-Mail Adresse, damit ich es ihm sofort erklären werde.

fernando.fransis@yahoo.de

Als Anfänger in Programmierung brauche ich Hilfe bei verschiedenen Aufgaben.

Wenn jemand mir dabei helfen kann, bin ich sehr dankbar dafür.

beste Grüße von

Fernando

bei Antwort benachrichtigen
mr.escape Fernando1 „Fragen von Fernando (verbesserte Fragenstellung)“
Optionen

Mit
Private Sub Picture2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  Dim CurPos As Long
  Dim ColVal As ColorValues
  CurPos = GetPixel(Picture2.hdc, X, Y)
  ColVal = fBreakColors(CurPos)
  Label3.Caption = ColVal.iRed 'Label3 anlegen für die debug-ausgabe
End Sub

bekommst du die klick-koordinate und kannst dann den dazu passenden eintrag in "Areas" suchen (ähnlich wie in "IsPointKnown"). Dann arbeitest du die "Points"-liste durch und machst alle punkte im zweiten bild weiß. Danach den eintrag in "Areas" löschen, denn die fläche ist ja nun weg.

In "Picture2_Erzeugen_Click()" verwendest du die variablen "Breite1" und "Höhe1", ohne sie zuvor mit gültigen werten zu füllen.

In "Pixel2_Zahl_Click()" werden die variablen "iX2" und "iY2" ebenso unklar verwendet. Diese sind aber global und evtl. haben sie einen sinnvollen inhalt.

Für die berechnung der flächen wäre ein einfacherer array-ansatz dramatisch schneller. Statt also bei "IsPointKnown" immer wieder in "Areas" zu suchen, würde ein einfaches nachsehen im array reichen.
Z.b.:
Private used(100, 100) As Integer
und dann später einfach
If used(xPos, yPos)0 Then
  IsPointKnown = True

0 heißt unbenutzt und eine andere zahl ist die flächennummer (zu setzen in "AreaDetection"). Am ende ergeben alle punkte mit der selben flächennummer eine zusammenhängende fläche. Beim löschen müsste man einfach die flächennummer unter der maus auslesen und alle anderen mit der selben flächennummer weiß machen.

mr.escape

"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen