Spojení dvou obrázků   otázka

VB.NET

Dobrý den,

prosím nevíte někdo jak sloučit 2 obrázky do jednoho.

mám:

myBitmapA = New System.Drawing.Bitmap(Images\A.bmp)
myBitmapB = New System.Drawing.Bitmap(Images\B.bmp)

A chtěl bych z toho vytvořit:

myBitmapC = myBitmapA+myBitmapB

A ještě lepší by bylo, když si např na form do souřadnic X1 Y1 a X2 Y2 vykresím obrázek.

A poté bych chtěl obrázek mezi těmito souřadnicemi uložit třeba na C:\

Prosím o radu.

Děkuji

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

Třída Bitmap má metody SetPixel a GetPixel.

Oba obrázky pomocí jednoduchého cyklu "přečtete" pomocí GetPixel a pomocí SetPixel zapíšete hodnoty do nové Bitmapy. Jak už si to poslepíte, záleží na vás...

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

Ok. Děkuji. Jdu to vyzkoušet. Nějak mě nanapdalo, že to půjde tak "složitě" po pixelech. I když je pravda, že z reálného hlediska je můj požadavek nesmyslný :)

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

Zbytečně složité a neefektivní. Vytvoříte objekt Graphics pomocí objektu Image (Graphics.FromImage) který reprezentuje první obrázek, a druhý obrázek do něj libovolně vykreslíte pomocí Graphics.DrawImage...

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

Otázkou ovšem je, co znamená myBitmapC = myBitmapA+myBitmapB

Pokud se jedná o složení dvou obrázků "přes sebe", pak je principiální cestou ta rada s využitím funkcí GetPixel a SetPixel. Pouze si musíte nadefinovat vhodnou funkci, jak se budou jednotlivé pixely "sčítat" - dají se tak vytvářet libovolné efekty. Pouze upozornění na skutečnost, že to bude šíleně pomalé a neefektivní - existují mnohem sofistikovanější způsoby práce s jednotlivými body bitmapy (např. využitím maticových počtů či uzamčením bitmapy v paměti a přímým přístupem k jednotlivým jejím bodům).

Pokud chcete ty obrázky spojit jako koláž "vedle sebe" či přes sebe tak, že se vzájemně překrývají (nekombinují), pak je nejjednodušší způsob dle rady pana Linharta (i tady existují určité možnosti částečné kombinace jednotlivých obrázků, např. nastavením "průhledné" barvy apod.).

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