[VB .NET] Alpha-channel weg bij Icon in PictureBox

Pagina: 1
Acties:

  • dixon
  • Registratie: Januari 2001
  • Laatst online: 01-01 21:15
Hallo,

ik heb dit topic al een keer gepost maar geen antwoord gekregen. Ik hoop dat iemand het nu wel weet!

Het probleem is dat icoontjes zoals die van Internet Explorer in Windows XP een Alpha channel hebben, en er is dus een bug in VS .Net waardoor deze weggelaten word wanneer je het icoontje inlaad in een button of picturebox als .image. Zie hier voor informatie over deze bug en een zgn 'workaround' :)
http://support.microsoft....aspx?scid=kb;en-us;822488


Oke, eerst creeer ik Dynamisc een 2d-array van PictureBox's in een functie genaamd PictureBoxArray. Verder heb ik een
PictureBoxArray_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) handles MyBase.paint.

Hier worden icoontje ingeladen, van bijv. een .ico:
code:
1
2
3
                    Dim Hicon As IntPtr = LoadImage(0, button_icon(teller1, teller2), 1, 0, 0, 16)
                    Dim iconBitmap As Bitmap = Bitmap.FromHicon(Hicon)
                    PictureBoxArray(teller1, teller2).Image = iconBitmap

of van een .exe file:
code:
1
2
3
4
5
6
hImgLarge = SHGetFileInfo(button_path(teller1, teller2), 0, shinfo, Marshal.SizeOf(shinfo), _
SHGFI_ICON Or SHGFI_LARGEICON)

myIcon = System.Drawing.Icon.FromHandle(shinfo.hIcon)
PictureBoxArray(teller1, teller2).Image = myIcon.ToBitmap
myIcon.Dispose()


Mijn code is in principe goed, de icoontjes worden ingeladen, alleen zien de Alpha iconen er lelijk uit. Waar normaal Alpha is is het nu zwart (beetje schaduw achtig).

De workaround van Microsoft klopt niet helemaal volgens mij, of ze geven te weinig informatie. Probeer het maar uit, wat zei zeggen :)
Zoiezo al zou hij werken, is het nog niet helemaal wat ik wil want zij drukken het icoontje af met E.DrawGraphics en ik stop hem in een picturebox, zodat je er op kan klikken, tooltiptext hebt etc.

Maar goed, ik kan in principe ook een array van Icon's (IconArray :)) maken, maar dan zit ik inprincipe nog met hetzelfde probleem.

Ik heb al veel gezocht op Google, maar zo'n beetje alles wat ik vond was van toepassing op VB6, of had er niet mee te maken :)

Mijn programma is bijna af, hij werkt goed, meerdere mensen laten testen, maar die icoontjes zien er nog niet mooi uit, dus is ie nog niet af. Ik hoop dat iemand me kan helpen.

Wat een onzin..


  • dixon
  • Registratie: Januari 2001
  • Laatst online: 01-01 21:15
Iemand please????

Wat een onzin..


  • Rhapsody
  • Registratie: Oktober 2002
  • Nu online

Rhapsody

In Metal We Trust

Ik ben het aan het proberen, maar waar heb jij deze regel geplaatst:

Me.Button1.Paint = New System.Windows.Forms.PaintEventHandler(AddressOf Me.Button1_Paint)

🇪🇺 pro Europa!


  • dixon
  • Registratie: Januari 2001
  • Laatst online: 01-01 21:15
Bedoel je van dat voorbeeld van microsoft? Dat moest na je InitializeComponent ()gedeelte. En daar had ik het ook geplaatst. Maar het hele stukje runt niet eens bij mij.

[ Voor 31% gewijzigd door dixon op 19-11-2003 14:35 ]

Wat een onzin..


  • Rhapsody
  • Registratie: Oktober 2002
  • Nu online

Rhapsody

In Metal We Trust

tsjek ff mijn topic (xp toolbar icon)
in dit forum.

denk dat je er wel wat aan hebt.

🇪🇺 pro Europa!


  • dixon
  • Registratie: Januari 2001
  • Laatst online: 01-01 21:15
Nope, tis niet helemaal hetzelfde. Maar ik heb het probleem al opgelost, ook al moest ik veel code omgooien! In plaats van dat ik de plaatjes inlaad in een PictureBoxArray heb ik nu een IconArray die ik afdruk met e.Graphics.Drawicon. Oke, het is niet hetzelfde als een PictureBox, maar het werkt :) En de icoontjes zien er mooi uit!

Wat een onzin..

Pagina: 1