Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Osittain läpinäkyvä teksti

Sivun loppuun

rndprogy [17.07.2004 12:51:58]

#

Nyt on pakko kysyä; millä APIlla Labelista saisi osittain läpi näkyvän?

BlueByte [17.07.2004 18:21:23]

#

Hmm.

tejeez [17.07.2004 18:24:40]

#

Ei varmaan millään.

nomic [17.07.2004 18:37:37]

#

itsellä olisi mielessä yksi hidas tekniikka mutta en ole varma pystyykö vb:llä toteuttamaan sitä eli:
tektsin väri muistiin (a = label1.forecolor)
ja sitten siinä kohtaa missä teksti on niin luetaan joka pikseli taulukkoon siitä alapuolelta ja lopuksi muistaakseni jaettiin tai kerrottiin tai plussattiin tai miinustettiin nää pikseli-arvot... turhan vaikeeta... ennemmin suosittelen että jokaisen kirjaimen kirjoitat johonkin kuvaan, vaikkapa paintilla sen jälkeen tallennat sen, viet vb:hen ja blittauksen avulla sitten hoidat homman:

ne alkumääritys jutut mitä en muista ulkoa tähän

funkkari jossa esim:
A on kuva kohdasta x,y joka siirretään sitten itse kuvaan blittauksella
ja olikohan että maskia ei tarvitse piirtää niin se kirjoittaa siihen kuvaan pikseleiksi arvot: tausta + sprite jos oikeen muistan...

eli jokainen kirjain erikseen muistiin:
a= (pkuva.picture, x, y, 16,16, sprite1.picture, kirjain,016,16,jotain) tohon tyyliin,joku saa neuvoa tarkemmin, itse en muista miten tää homma hoitui ;)

peki [17.07.2004 18:58:58]

#

Jos kyseessä on vb6, niin alphablendauksen saat helposti interpoloimalla(vb.netissä sisäänrakennettu)

' alpha on välillä 0 - 1 ja vari on hajottamaton rgb arvo
Function Alphablend(ByVal vari1 as Long, ByVal vari2 as Long, ByVal alpha as Double) as long
    Alphablend =  vari1*(1-alpha) + vari2*alpha
End Function

Print käskyllä voit sitten tietääkseni printata erivärisiä kirjaimia kyseisellä värillä. Blendaat vain kirjaimen värin taustaväriin.

Edit: Kyseinen keino ei muuta labelia läpinäkyväksi, vaan saat aikaan vain samankaltaisen efektin.

rndprogy [17.07.2004 19:08:38]

#

Siinä olisi kyllä taustakuva tekstin taustalla. Että eriväristen kirjaimien tulostus ei riitä.

peki [17.07.2004 19:18:50]

#

Gdi+:n apilla tuo olisi helppoa.
Loisit vain gradientti siveltimen ja piirtäisit tekstin sen avulla..
Jostain olin saanut päähäni, että jos lataa Microsoftin sivuilta tietyn kirjaston, voisi käyttää gdi+:aa myös vb6:ssa..

Edit:
Oletukseni osui näemmä oikeaan:
http://www.mvps.org/emorcillo/vb6/multimedia/imageprops.shtml
Jos sinulla on XP, niin voit tuolla keinolla käyttää gdi+:aa.

nomic [17.07.2004 19:25:32]

#

rndprogy, no sitten vaan kaikki käytössä olevat kirjaimet yhdeksi isoksi kuvaksi ja eikun blittailemaan ja tunge sinne tämmöinen aliohjelma:
tarvitset seuraavat; picture1, picture2, text1, text2
käyttötarkoitus:
picture1 = kuva josta revitään kirjaimet
picture2 = kuva jossa on taustakuva ja johon kirjaimet piirretään sitten
text2 = teksti johon on aluksi kirjoitettu se teksti mikä lopuksi piirretään
text1 = teksti joka siirretään kirjain kerralla text2:een

dim kaappaaja as string

for i = 1 to len(text1.text)
 kaappaaja = mid(i,text1.text)
 kirjain
next i

function kirjain()
 if kaappaaja = "a" then
 'tähän sit koodin rimpsu et otetaan blittaamalla jokin kohta kuvasta ja laitetaan pikki1:seen
 end if
 text2.text = text2.text + kaappaaja
end function

siis tommosta itse kokeilisin, ainaskaan ei tule ongelmia fonttien kanssa, itse inhoan semmoista että joissakin pienissä peleissä/ohjelmissa on käytössä fonttejä joita ei wintoosassa ole valmiina ja ei suostu käynnistymään tämän vuoksi ellet ole hankkinut oikeaa fonttia jne... se on myöskin yksi syy miksi kannatan itse enemmän sitä että peliin/ohjelmaan joko otetaan käyttöön tätä tapaa piirtää teksti tai sitten jos ei piirretä niin sitten käytetään ihan perus fontteja (arial, verdana jne...)

rndprogy [17.07.2004 19:40:08]

#

Tässä onkin nyt sellainen ongelma että alan käyttämään tässä OpenGL:llää, josko sillä onnistuisi paremmin.

Edit: Muotoilin lauseen oikein

nomic [17.07.2004 19:47:07]

#

no voi kehveli... sitten osaa ainaskaan neuvoa yhtään eli fiksummat saa luvan auttaa :)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta