Grafický editor – 9. díl
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Grafický editor – 9. dílGrafický editor – 9. díl

 

Grafický editor – 9. díl

Google       Google       18. 4. 2006       7 744×

Původně jsem měl v plánu vás seznámit s tvorbou elips a kruhů, které jsou necelé, jenže plány se mění. Sice by to byla možnost, ale určitě víc využijete kruhů a elips, které jsou vevnitř vybarvené, a proto se podíváme prve na to, jak vybarvovat různé části obrázků, abychom mohli vytvářet plné elipsy a kružnice. Ale nebude na to psát vlastní funkci.

Reklama
Reklama

Psaní vlastní funkce by bylo moc zdlouhavé a složité. Proto využijeme API funkce ExtFloodFill. Kód bude vypadat takto:


Private Declare Function ExtFloodFill Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long, ByVal wFillType As Long) As Long
    
Private Sub Vybarvi(Img As PictureBox, X As Single, Y As Single, mode As Boolean, clr As Long, gclr As Long)
    On Error Resume Next
    Imgp = Img.Point(X, Y)
    Img.FillColor = clr
    Img.FillStyle = vbSolid
    If mode = True Then
        rtn = ExtFloodFill(Img.hdc, X, Y, gclr, 0)
    End If
    If mode = False Then
        rtn = ExtFloodFill(Img.hdc, X, Y, Imgp, 1)
    End If
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Vybarvi Picture1, X, Y, True, &H663322, 0
End Sub

Co tento kód umí? No umí vybarvovat části obrázků, které mají něco společného. To, čím bude tato společná vlastnost, má na starost parametr mode. Pokud bude mít hodnotu False, bude se vybarvovat každá plocha, která má stejnou barvu a je spojená. Pokud ale dáme do parametru mode True, budeme využívat speciální typ vybarvování a ten funguje tak, že se vybarví určitá část ohraničená nějakou barvou. Zatím nepočítejte s tím, že by se brala v potaz tolerance nebo tak, to už jsou techniky pokročilejší, na které si budeme muset psát vlastní algoritmy anebo si hledat knihovny.

Ještě bych se vrátil ke kódu a popsal parametry. První z nich (Img) určuje obrázek, ve kterém pracujeme. X a Y určují souřadnice. Mode, jak jsem psal, určuje mód vybarvování, Clr barvu, kterou se vybarvuje a poslední gclr se používá, jen když je mode na true a určuje barvu ohraničení, kterým se vybarvování řídí.

Příště tedy ony slibované částečné kruhy a elipsy.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Jiří ChytilAutor programuje ve VB, zajímá se o elektrotechniku, studuje na SOŠ Elektrotechnické - obor číslicová technika.
Web    

Nové články

Obrázek ke článku Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres HCPP16 pořádá od 30. září do 2. října nezisková organizace Paralelní Polis již potřetí, a to ve stejnojmenném bitcoinovém prostoru v pražských Holešovicích. Letos přiveze na třídenní konferenci přes 40 většinou zahraničních speakerů – lídrů z oblastí technologií, decentralizované ekonomiky, politických umění a aktivismu. Náměty jejich přednášek budou také hacking, kryptoměny, věda, svoboda nebo kryptoanarchie.

Reklama
Reklama
Obrázek ke článku ICT PRO školení zaměřené nejenom na ICT

ICT PRO školení zaměřené nejenom na ICT

Dovolte, abychom se představili. Jsme zaměstnanci společnosti ICT Pro, profesionálové v oblasti poskytování komplexních ICT služeb. Neboli služeb spojených s informačními a komunikačními technologiemi, které dnes - ve 21. století - tvoří  nedílnou součást běžného provozu všech moderních firem.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý