Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Genomskinlig bakrund på en image?

Postades av 2003-05-14 13:55:55 - Niklas Palmnert, i forum visual basic - allmänt, Tråden har 6 Kommentarer och lästs av 491 personer

Hej
Det är så att jag har stött på ett litet problem, och jag har ett program som plockar ut iconen från en exe fil, men problemet är att jag får inte med det som ska vara genomskinligt, utan den färgen blir grå

Jag skickar med koden:

<code>
Private Function ExtractIcon(FileName As String, AddtoImageList As ImageList, PictureBox As PictureBox, PixelsXY As Integer) As Long
Dim SmallIcon As Long
Dim NewImage As ListImage
Dim IconIndex As Integer

If PixelsXY = 16 Then
SmallIcon = SHGetFileInfo(FileName, 0&, FileInfo, Len(FileInfo), Flags Or SHGFI_SMALLICON)
Else
SmallIcon = SHGetFileInfo(FileName, 0&, FileInfo, Len(FileInfo), Flags Or SHGFI_LARGEICON)
End If

If SmallIcon <> 0 Then
With PictureBox
.Height = 20 * PixelsXY
.Width = 20 * PixelsXY
.ScaleHeight = 20 * PixelsXY
.ScaleWidth = 20 * PixelsXY
.Picture = LoadPicture("")
.AutoRedraw = True
'.BackColor = Nothing <------ Fungerar inte!

SmallIcon = ImageList_Draw(SmallIcon, FileInfo.iIcon, PictureBox.hDC, 0, 0, ILD_TRANSPARENT)
.Refresh
End With

IconIndex = AddtoImageList.ListImages.Count + 1
Set NewImage = AddtoImageList.ListImages.Add(IconIndex, , PictureBox.Image)
ExtractIcon = IconIndex
End If
End Function
</code>

som ni ser i koden så fungerar det inte att sätta backcolor till nothing, och om man tar bort det helt så blir bakrunden grå.......
någon som har ett tips?


Svara

Sv: Genomskinlig bakrund på en image?

Postades av 2003-05-14 14:44:45 - Andreas Hillqvist

Det finns en funktion som heter OleCreatePictureIndirect. Den omvandlar ett handtag för en icon till en stdpicture.

Har skrivit om din funktion attanvända OleCreatePictureIndirect. Samt att retunerar ListImage istället för ett index:
<code>
Option Explicit

Private Type PictDesc
cbSizeofStruct As Long
picType As Long
hImage As Long
xExt As Long
yExt As Long
End Type

Private Type Guid
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type

Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" (lpPictDesc As PictDesc, riid As Guid, ByVal fPictureOwnsHandle As Long, ipic As IPicture) As Long

Private Function ExtractIcon(FileName As String, AddtoImageList As ImageList, PixelsXY As Integer) As ListImage
Dim hIcon As Long
Dim oNewPic As Picture
Dim tPicConv As PictDesc
Dim IGuid As Guid

If PixelsXY = 16 Then
hIcon = SHGetFileInfo(FileName, 0&, FileInfo, Len(FileInfo), Flags Or SHGFI_SMALLICON)
Else
hIcon = SHGetFileInfo(FileName, 0&, FileInfo, Len(FileInfo), Flags Or SHGFI_LARGEICON)
End If

If hIcon Then
tPicConv.cbSizeofStruct = Len(tPicConv)
tPicConv.picType = vbPicTypeIcon
tPicConv.hImage = hIcon

' Fill in magic IPicture GUID {7BF80980-BF32-101A-8BBB-00AA00300CAB}
IGuid.Data1 = &H7BF80980
IGuid.Data2 = &HBF32
IGuid.Data3 = &H101A
IGuid.Data4(0) = &H8B
IGuid.Data4(1) = &HBB
IGuid.Data4(2) = &H0
IGuid.Data4(3) = &HAA
IGuid.Data4(4) = &H0
IGuid.Data4(5) = &H30
IGuid.Data4(6) = &HC
IGuid.Data4(7) = &HAB

OleCreatePictureIndirect tPicConv, IGuid, True, oNewPic

Set ExtractIcon = AddtoImageList.ListImages.Add(, , oNewPic)
End If
End Function
</code>


Svara

Sv: Genomskinlig bakrund på en image?

Postades av 2003-05-14 15:56:18 - Niklas Palmnert

okey tack

Nu känner jag mig lite dum, men hur ska jag göra för att
fixa in iconen i en Image?

för att jag har försökt att hämta svaret från ExtractIcon
men jag får bara upp ett felmeddelande hela tiden, och det kvittar hur jag än
gör.

det står
"Wrong number of arguments or invalid property assignment"

vad gör jag för fel?

EDIT:

får även fram nu meddelandet
"Invalid Picture"


Svara

Sv: Genomskinlig bakrund på en image?

Postades av 2003-05-14 20:20:12 - Andreas Hillqvist

Jag har separerat funktionerna.

Denna funktionen tar ett handtag för en bitmap, icon, metafil och retunerar ett stdPicture objekt:
<code>
Private Type PictDesc
cbSizeofStruct As Long
PicType As Long
hImage As Long
xExt As Long
yExt As Long
End Type

Private Type Guid
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type

Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" (lpPictDesc As PictDesc, riid As Guid, ByVal fPictureOwnsHandle As Long, ipic As IPicture) As Long

Public Function ImageToPicture(Handle As Long, Optional PictureType As PictureTypeConstants = vbPicTypeBitmap) As StdPicture
Dim Guid As Guid
Dim PictDesc As PictDesc
If Handle Then
With PictDesc
.cbSizeofStruct = Len(PictDesc)
.PicType = PictureType
.hImage = Handle
End With

' Fill in magic IPicture GUID {7BF80980-BF32-101A-8BBB-00AA00300CAB}
With Guid
.Data1 = &H7BF80980
.Data2 = &HBF32
.Data3 = &H101A
.Data4(0) = &H8B
.Data4(1) = &HBB
.Data4(2) = &H0
.Data4(3) = &HAA
.Data4(4) = &H0
.Data4(5) = &H30
.Data4(6) = &HC
.Data4(7) = &HAB
End With
OleCreatePictureIndirect PictDesc, Guid, True, ImageToPicture
End If
End Function
</code>

För att hämta ut en icon från en fil som stdPicture:
<code>
Public Const eiErrFailed = vbObjectError + 1
Public Const eiErrNoHandle = vbObjectError + 2

Private Const MAX_PATH As Long = 260

Private Const SHGFI_ICON As Long = &H100

Private Const SHGFI_LARGEICON As Long = &H0
Private Const SHGFI_SMALLICON As Long = &H1

Private Type SHFILEINFO
hIcon As Long ' out: icon
iIcon As Long ' out: icon index
dwAttributes As Long ' out: SFGAO_ flags
szDisplayName As String * MAX_PATH ' out: display name (or path)
szTypeName As String * 80 ' out: type name
End Type

Private Declare Function SHGetFileInfo Lib "shell32.dll" Alias "SHGetFileInfoA" (ByVal pszPath As String, ByVal dwFileAttributes As Long, psfi As SHFILEINFO, ByVal cbFileInfo As Long, ByVal uFlags As Long) As Long

Public Function ExtractIcon(FileName As String, Optional IconSize As Integer = 32) As StdPicture
Dim Flags As Long
Dim FileInfo As SHFILEINFO
If IconSize = 16 Then
Flags = SHGFI_ICON Or SHGFI_SMALLICON
Else
Flags = SHGFI_ICON Or SHGFI_LARGEICON
End If

If SHGetFileInfo(FileName, 0&, FileInfo, Len(FileInfo), Flags) Then
If FileInfo.hIcon Then
Set ExtractIcon = ImageToPicture(FileInfo.hIcon, vbPicTypeIcon)
Else
Err.Raise eiErrNoHandle, "ExtractIcon()", "No icon handle returned"
End If
Else
Err.Raise eiErrFailed, "ExtractIcon()", "SHGetFileInfo() call failed"
End If
End Function
</code>

Här är ett exempel som hämtar iconen från notepad:
<code>
Private Sub Form_Load()
Image1.Picture = ExtractIcon(Environ("SystemRoot") & "\notepad.exe")
End Sub
</code>


Svara

Sv: Genomskinlig bakrund på en image?

Postades av 2003-05-14 23:54:56 - Niklas Palmnert

Tackar =))

Nu fungerar det fin fint :))

Stort tack!


Svara

Sv: Genomskinlig bakrund på en image?

Postades av 2003-05-15 07:20:26 - Andreas Hillqvist

Koden funkar inte fullt u med med semitransparanta ikoner som finns i Windows XP.

Du har glömt markera inlägget som löst.


Svara

Sv: Genomskinlig bakrund på en image?

Postades av 2003-05-17 13:38:53 - Niklas Palmnert

nä jag såg att det inte riktigt fungerade med win XP:s iconer, men det gör inte så mycket

Jag klarar mig ändå =)

jo jag såg nu också att jag har glömt att sätta det till löst
men det fixar jag nu =)

Tack åter igen =)


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 166
27 952
271 704
834
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies