Objekt na pictureboxu   zodpovězená otázka

VB.NET, Grafika

Mám dotaz, když mám PictureBox z názvem PicTabule a potřebuji vykreslit obrázek a dát mu možnost přesouvání jak to mám udělat?

Za odpověď děkuji.

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

Co znamená "vykreslit obrázek a dát mu možnost přesouvání"? Jak přesouvat objekty myší je zde:

http://vbnet.cz/snippet--10-jak_umoznit_...

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

Znamená to udělat na pictabule nový obrázek a potom ho přesouvat a udělat to tak aby obraz šel uložit.

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

Dělá se to celkem jednoduše:

1) Vytvoříte si objekt Bitmap stejné velikosti jako je PictureBox.

2) Vytvoříte si proměnnou typu Graphics a do ní uložíte Graphics.FromImage(bitmapa)

3) PictureBoxu jako Image nastavíte tu bitmapu.

4) V události Paint vykreslíte obrázek na správné místo do bitmapy.

5) V události MouseMove při stisknutém tlačítku myši bitmapu smažete a obrázek nakreslíte na jiné místo.

6) Ve chvíli, kdy to potřebujete uložit, zavoláte na bitmapě Save.

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

To je jako bych hledal jehlu v kupce sena... přesněji, byl bych u ní ale přesto ji neviděl. Přesto že jsem to víceméně pochoil, tále potřebuji kód. Nemohl by jste mi ho napsat prosím?

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

http://vbnet.cz/forum-tema--2608-kreslen...

http://vbnet.cz/clanek--26-kreslici_tabu...

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

Ehm... jak to mám poskládat?

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

To doopravdy nikdo neví?

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

Ví, ale nebude vám odpovídat, i když píšete tučně. Rad a nápadů, i odkazů na kód zde zaznělo dost, s čím konkrétně máte problém? Jestli je to s tím, jak to za sebe poskládat, tak to vám tady na fóru říkat nebudeme, protože to najdete v článcích, které zde máme v kategorii grafika / GDI+. http://www.vbnet.cz/kategorie--14.aspx

V zásadě se můžete řídit postupem, který jsem vám napsal o několik příspěvků výše, jednotlivé části jsou dobře popsané v článcích nebo v odkazovaných diskusích. Stačí jen chtít, aktivní musíte být vy, vy něco chcete.

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

Asi s nějakým trápením bych snad první část problému díky zdejšímu webu uplácal - tedy kreslit na PictureBox - to je tu popsáno perfektně. Ale pak obrázek vystřihnout a tahat po PictureBoxu? To už je pro mě "vyšší dívčí"!

5) V události MouseMove při stisknutém tlačítku myši bitmapu smažete a obrázek nakreslíte na jiné místo.

Dovedl bych (zase s pomocí toho, co tu na webu je) zvolit část z PictureBoxu pomocí Rectangle - mám tedy situovaný obdélník, mohl bych jeeho obrys na PB i vykreslit. Mohl bych třeba mít druhý formulář, tam udělat podobné jako na prvním a vybranou kresbu tam vložit do jiného PB velikosti vybraného obdélníku a popř. obrázek uložit do souboru.

Ale jak udělat: "bitmapu smažete a obrázek nakreslíte na jiné místo" - tedy přenést vybranou část jinam by mě zajímalo - nechci kód, jen trochu přiblížit, co k tomu použít. Poradíte, prosím?

Jak uložit obraz z PictureBoxu, to se tu také najde.

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

Pokud pod obrázkem nic není (je to bílá plocha nebo prostě jednobarevná plocha), pak to vymažete voláním

g.Clear(Color.White)

na objektu g (typu Graphics) příslušícímu k té bitmapě.

V události MouseMove si zjistíte souřadnice myši a po smazání bitmapy prostě obrázek vykreslíte do té bitmapy na správné místo.

Uložení je triviální, protože kreslíte do obrázku, stačí na té bitmapě zavolat Save.

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

Díky, vlastně to chce trochu myslet. Představoval jsem si sice vymazání jenom té vybrané části, ale je to skoro totéž - vykreslit obdelník vyplněný stejnou barvou jako je pozadí a je to.

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