Vyznačování objektů v PictureBoxu   zodpovězená otázka

C#, WinForms

Dobré den všem,

potřeboval bych poradit s jedním nápadem (problémem). Mám aplikaci vytvořenou jakožto WindowsForm a na něm je PictureBox. PictureBox načte obrázek (ať už z MS SQL, tak třeba ze souboru) a uživatel má možnost označit jednotlivé součásti obrázku a pojmenovat je. V současnosti je toto řešeno jednoduchým způsobem. Uživatel stiskne levé tlačítko myši, zaznamenají se údaje o poloze kurzoru na obrázku, po nějaké době (buď myší pojede, nebo zůstane na místě), uživatel tlačítko pustí a program spočítá rozdíl mezi původní a aktuální pozici, pokud je rozdíl roven nule, tak vykreslí pouze "kříž" z dvou čar, pokud není roven nule, vykreslí čtverec/obdelník.

Nyní, když je vyzkoušeno, že toto řešení funguje, tak se přemýšlí na lepším zpracování právě tohoto. A já bych si chtěl pouze ověřit, jestli jsou mé úvahy v tomto směru správné. Vytvořím si nějakou strukturu, která bude obsahovat například kolekci bodů, uživatel si zvolí, jestli chce vykreslovat ovál, čtverec/obdelník, nebo polygon a nyní zadá, kde se má nacházet, jaký má mít rozměr. Samotné vykreslování není problém, ale řeším, jak provést, aby na něj mohl třeba kliknout a posouvat ho pomocí šipek. Takže bych řekl, že kdykoliv přejíždí myší přes obrázek, tak musím zkontrolovat, jestli se náhodou nenachází nad nějakým "objektem", pokud ano, tak ho nějak zvýrazním. Pokud na něj klikne, tak si někde uložím název tohoto "objektu", abych věděl, se kterým se pracuje. ... A nebo je nějaký jiný možný postup? Akorát doufám, že jsem to popsal srozumitelně. Prostě bych potřeboval interaktivní zobrazování v PictureBoxu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Na tohle by se hodilo WPF. Pokud ve WPF nakreslíte nějaký objekt (elipsa, čára) tak tento objekt se chová skutečně jako objekt a je k němu přístup v hierarchii objektů (v GDI+ je nutné si informace o nakreslených objektech udržovat ručně). Tyto grafické objekty mají dokonce svoje události jako běžné ovládací prvky takže není problém zachytit například klepnutí myší. Kromě toho to není nutné neustále překreslovat jako v GDI+ (Windows Forms) v události Paint.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

A dá se WPF začlenit do již hotové aplikace Windows Forms? Podle toho, co jste psal, tak by to mohlo řešit můj problém, akorát už mám hotovou aplikaci, takže bych to musel celé přepracovávat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dá, existuje k tomu Windows Forms ovládací prvek System.Windows.Forms.Integration.ElementHost, ve kterém lze hostovat libovolný WPF element.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji mockrát za odpověď.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback