![]() |
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 |
Re: Mapped images
Man könnte ja ein zusätzliche Matrix/Bitmap erstellen und der für jedes Pixel seine zugehörigkeit abgespeichert ist.
|
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 |
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. |
Re: Mapped images
Folgende Komponenten habe ich auf toris gefunden:
( ![]() 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 ![]() --------------------------------------------- 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 ![]() |
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 :) |
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. |
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 )
|
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. |
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. |
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