Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mapped images (https://www.delphipraxis.net/25286-mapped-images.html)

lume96 4. Jul 2004 08:25


Mapped images
 
Hallo,

(Ich hoffe mal, die Rubrik ist ok; wusste nicht so genau, wo ich diese Frage einordnen sollte.)

Ich bin dabei für ein eventuelles Projekt ein bisschen Vorarbeit zu leisten. Unter Anderem benötige ich für dieses Projekt „Mapped Images“. Es geht darum, technische Zeichnungen anzuzeigen (z.B. Teilansicht eines Benzinmotors), die zur Identifizierung von Ersatzteilen dienen. Folgende Funktionen sollten vorhanden sein :
1) Ein MouseOver/MouseMove Event
2) Ein MouseClick Event

Jetzt frage ich mich, wie man das am Besten programmieren soll. Mein eigentliches Problem ist, dass die verschieden „aktiven“ Bereiche des Images nicht unbedingt rechteckig sind. Wäre Letzteres der Fall gewesen, hätte ich jeden Bereich einfach durch X1,Y1 (= Punkt oben links) sowie X2,Y2 (Punkt unten rechts) definiert und dann gegen die aktuelle Mausposition getestet.

Auf Grund der Natur der technischen Skizzen, müssen in diesem Fall die verschiedenen „aktiven“ Bereiche frei definierbar sein. Wie kann man so etwas am Besten in Koordinaten umwandeln, um diese dann später gegen eine Mausposition zu testen?

Bin für jeden Vorschlag dankbar.

Gruss,
Lutz

neolithos 4. Jul 2004 08:32

Re: Mapped images
 
Man könnte ja ein zusätzliche Matrix/Bitmap erstellen und der für jedes Pixel seine zugehörigkeit abgespeichert ist.

lume96 4. Jul 2004 10:51

Re: Mapped images
 
Danke Neolithos,

werde mal ein paar tests in diese Richtung machen und hoffen, dass das von der Geschwindigkeit her noch vertretbar ist. Bei 'nem 600x400 pixel Bild müsste ich ja bei jeder Mausbewegung (OnMouseMove Event) 'ne Tabelle mit bis zu 24.000* :? entries abfragen (* wenn man davon ausgeht das 10% der Pixel zu einem "aktiven" Bereich gehören).

Gruss,
Lutz

neolithos 4. Jul 2004 11:18

Re: Mapped images
 
So schlimm ist das doch nicht!

Sagen wir ein Bild vom ausmaß 640x480 mit ca. max 255 Elementen, sind gerade mal 300kB im Speicher. Das ist heutzutage nicht mehr viel. :wink:

Element 0 würde ich für kein Element reservieren.

MaBuSE 11. Aug 2004 10:52

Re: Mapped images
 
Folgende Komponenten habe ich auf toris gefunden:
( http://swiss.torry.net/graphicsother.htm )

Evtl kannst du im Source schauen, wie die das gemacht haben :-)

THotImage v.2.2
FWS
110 Kb
18.08.98
By Alexander A. Miachin. THotImage is an Image with hot areas, defined by user. Contains all features of ascentor (TImage) and more. HotSpots property editor and conversion utilities.

Fully functional
Source: Included
Download: D2 D3 D4
http://swiss.torry.net/vcl/graphics/other/hotimage.zip

---------------------------------------------

THotSpotImage v.1.1
FW
996 Kb
03.09.02
By TMS Software. Image that can have hotspots like a website ImageMap:
Hotspots can be rectangle, ellipsis, polygon or rotated rectangles, rotated ellipsis
Hotspot handling for hovering, hints, click, double clicks
Includes design time hotspot editor with magic wand tool for automatic polygon selections
Clipped or non-clipped hotspot hover-image or clicked-image.
Supports zooming
Allows to specify cursor over hotspots
Allows to show hotspots clicked.

Fully functional
Source: On purchase/registration
Exe-demo included
Source Price: $30
Download: CB5 CB6 D5 D6
http://swiss.torry.net/vcl/graphics/other/hsimg.zip

hboy 11. Aug 2004 10:59

Re: Mapped images
 
du kannst auch eine Teileliste erstellen, die jeweils ein Pixel speichert, welches auf dem entsprechenden Bauteil liegt, dann beim Klicken
region growing anwenden und dabei prüfen ob unter den Pixeln eines aus der Tabelle ist. Geht auch sehr schnell :)

Nikolas 11. Aug 2004 11:04

Re: Mapped images
 
Du könntest auch mit verschiedenen Farben arbeiten. Wenn du bei den Farben für ein Pixel nur die unwichtigsten (Least significant) Bits veränderst, sieht man in der Darstellung keinen Unterschied, wenn du die Farbe aber ausliest, kannst du so Informationen rausholen. So hast du kaum mehr Infos, als dein Bild, nämlich eine Liste, die den verschiedenen Farben noch das Ersatztteil zuordnet.
Das Ganze funzt dann so wie Steganografie, dem Verstecken von geheimen Daten in Bildern. Darüber findest du auch hier was im Forum.

Bei der Entwicklung könntest du erst mit Schwarz die Umrisse zeichnen lassen und dann per Floodfill die Farben setzen. Dann kannst du per BrushCopy die schwarzen Striche wieder rausnehmen, falls das erwünscht ist.

hboy 11. Aug 2004 11:18

Re: Mapped images
 
gehn bei 32bit images nicht ein viertes byte für alpha ? das könnt man doch verwenden, weils nich angezeigt wird (wenn es überhaupt existiert )

franktron 11. Aug 2004 11:55

Re: Mapped images
 
Also die Matrix variante ist wohl die beste die habe ich auch benutzt um eine auswahle was bei einem Aut zu lakieren ist.

Es geht eigentlich sehr schnell mein Bild wahr zwar nur halb so gross wie deins aber das sollte keine Probleme machen.

Aenogym 11. Aug 2004 12:19

Re: Mapped images
 
hi,

ich habe mal in einem programm eine landkarte von europa gehabt. und die einzelnen staaten wurden beim mouseover hervorgehoben.
ich habe einmal die normale karte genommen und in einem TBitmap wurde die Karte geladen, die alle staaten in verschiedenen farben darstellt.

dann habe ich beim mouseover der sichtbaren karte die farbe des pixels an derselben stelle in der unsichtbaren karte ermittelt. und je nach farbe habe ich dann erkannt, über welchem land die maus gerade ist...

Aenogym


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:23 Uhr.
Seite 1 von 2  1 2      

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