あなたは、WindowsのAPIに頼る場合、結果は256色でもよさそうだ:
Option Explicit
Private Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal dwImageType As Long, ByVal dwDesiredWidth As Long, ByVal dwDesiredHeight As Long, ByVal dwFlags As Long) As Long
Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const LR_LOADFROMFILE = &H10
Private Const WM_SETICON = &H80
Private Const IMAGE_ICON = &H1
Private Const ICON_SMALL = &H0
Private Const ICON_BIG = &H1
Private Sub SetIconFromFile(ByVal hWnd As Long, FullFileName As String)
Dim hIcon As Long
hIcon = LoadImage(App.hInstance, FullFileName, IMAGE_ICON, 16, 16, LR_LOADFROMFILE)
If hIcon = 0 Then Exit Sub
SendMessageLong hWnd, WM_SETICON, ICON_BIG, hIcon
SendMessageLong hWnd, WM_SETICON, ICON_SMALL, hIcon
End Sub
Private Sub Command1_Click()
SetIconFromFile Me.hWnd, App.Path & "\" & "icon8bpp.ico"
End Sub
ここでは、合計で256のパレットの色とアイコンとの比較です。 Me.Icon
は 、16
Hiにディザリングされたこれはまさに私の解決策でした。私は32ビットのアイコンをロードすることができますが、Form.Iconプロパティはもはや有効ではありません。だから私は MyForm_Loadのすべての出現を()を交換する必要がありました:Me.Icon = frmMain.Icon .... MyForm_Load()と :ターゲットにアイコンを設定します(バリアントとしてFRMのByRef)ミー SetFrameIcon SetFrameIcon形。 – Kiko