Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Ohjelmalle ulkokuori

Sivun loppuun

AdeRide [06.01.2005 01:57:31]

#

Miten saisin tehtyä sellaisen jutskan, että formin normaalit reunat ja tausta olisivat läpinäkyviä ja itse voisin tehdä ohjelmalleni oman ulkokuoren? Olen kyllästynyt ohjelmiin, joissa on se sama neliö siellä taustalla, vaikka värin voikin vaihtaa, joten haluaisin tehdä oman skinin esim. Reunat pitäisi saada pyöreiksi yms.

Metabolix [06.01.2005 02:19:31]

#

VB.NETillä:

Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None 'Reunat pois
Me.TransparencyKey = System.Drawing.Color.Purple 'Purple läpinäkyväksi.

VB6.0:lle on vähän pidempi tie: http://www.elitevb.com/content/01,0010,01/01.aspx

AdeRide [06.01.2005 03:16:04]

#

Minä en oikein hoksaa tuota VB 6.0 versiota tuosta. Miten toi liittyy mitenkään noihin formin reunoihin? Saatan olla hieman tyhmä, mutta pakko kysyä, jos joku vaikka neuvoisi hieman, miten tuota voisi hyödyntää noihin formin reunoihin.

Metabolix [06.01.2005 03:30:09]

#

Lataa joku niistä lähdekoodipaketeista ja tutki ja kokeile.

Tämä taitaa olla aika lailla sellaista, mihin pyrit. Tuosta vain muokkaat loputkin reunat pois...
kuva: http://www.elitevb.com/content/01,0010,01/figure_2.2.jpg
http://www.elitevb.com/content/01,0010,01/CustRgn1.zip

Kuvatagi ei näköjään toimi Putkan ulkopuolelle, hyvä niin. Tulipa nyt sekin testattua :) (kohta joku kysyy: mikä kuvatagi?)

AdeRide [06.01.2005 03:47:54]

#

Itseasiassa minulle on melkein ihan sama miltä tuo tausta näyttää, kunhan se ei näy ja minä voi ladata vaikka omat bitmap -tiedostot siihen skiniksi.

Se on se mihin minä pyrin?

Eli haluan esim, jotain sellaista koodia, jolla saisin omissa bmp-teidostoissa pinkillä olevat kohdat läpinäkyviksi tuossa formissa ja tuon formin läpinäkyväksi, mutta niin, että ne kaikki objektit näkyy siellä.

Metabolix [06.01.2005 04:39:14]

#

Voit yhdistellä alueita, jotka haluat läpinäkyviksi, ja sitten voit varmaan laittaa sen bitmapin pictureboxissa formille. Laita vaikka johonkin OnSkinLoad-subiin looppi, joka kokoaa isoon regioniin 1x1-palasia pinkkien pikseleiden kohdalle ja lopuksi laittaa sen regionin käyttöön. Sehän tarvitsee tehdä vain kerran, kun tausta ladataan. Tietysti algoritmia voi vielä tehostaa tekemällä mahdollisimman isoja osia kerralla.

Win2k:sta eteenpäin on mahdollista käyttää ihan yleisesti tuollaista VB.NETin tyylistä juttua, mutta en nyt muista, mistä se löytyi.

AdeRide [06.01.2005 04:47:51]

#

Noi sun neuvot on mulle ihan hepreaa... Ehkä mä lopetan koko projektin, kun en oikein hoksaa, mutta kiitos yrityksistä kuitenkin. :(

Metabolix [06.01.2005 05:26:13]

#

Jos minulla olisi VB-kääntäjä, kirjoittaisin tuon koodin vaikka valmiiksi. Kun keksii, mitä pitää tehdä, se on ihan helppo. Kai se menisi suunnilleen näin:

Dim X As Long
Dim Y As Long
Dim KokoAlue As Long
Dim Pala As Long
Dim Valipala As Long

' Oletetaan, että kuva on PictureBox:ssa
' Vari on se läpinäkyvä väri
' Kuvan mitat muuttujiin KuvanLeveys ja KuvanKorkeus

Pala = CreateRectRgn(0, 0, 0, 0) ' Yksi pikseli (kai)
KokoAlue = CreateRectRgn(0, 0, KuvanLeveys - 1, KuvanKorkeus - 1)

For X = 0 to KuvanLeveys - 1
  For Y = 0 to KuvanKorkeus - 1
    If PictureBox.Point(X, Y) = Vari Then
      ' Siirretään pikseli oikeaan kohti ja poistetaan regionista.
      ValiPala = OffsetRgn(Pala, X, Y)
      CombineRgn KokoAlue KokoAlue ValiPala RGN_XOR
      DeleteObject ValiPala
    End If
  Next Y
Next X

DeleteObject SetWindowRgn(Form.hwnd, KokoAlue, True)

Tuota pitää sitten soveltaa, jos se nyt toimii alkuunkaan. En ole tosiaan testannut.

Blaze [06.01.2005 11:57:21]

#

Metabolix kirjoitti:

Win2k:sta eteenpäin on mahdollista käyttää ihan yleisesti tuollaista VB.NETin tyylistä juttua, mutta en nyt muista, mistä se löytyi.

SetLayeredWindowAttributes. VB-esimerkki löytyy ihan täältä Putkasta: https://www.ohjelmointiputka.net/koodivinkit/24435-vb6-aktiivisen-ikkunan-päällä-istuva-maskotti


Sivun alkuun

Vastaus

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

Tietoa sivustosta