0
でオーバーフローが生じました( "自動車" から):算術演算は、Windowsがvb.netでフォームアプリケーション作成するとき、私はこのエラーに遭遇したColor.FromArgb
:227
R:55182
G:14876783
b:3808456647
argb:3808456647
でオーバーフローが生じました( "自動車" から):算術演算は、Windowsがvb.netでフォームアプリケーション作成するとき、私はこのエラーに遭遇したColor.FromArgb
:227
R:55182
G:14876783
b:3808456647
argb:3808456647
私はあなたがバイトサイズのチャンクにuintを分割しようとしていると思います。
たぶん `Int32`に格納するのにはあまりにも大きい。この
Imports System.Runtime.InteropServices
Public Class Form1
<DllImport("dwmapi.dll")>
Private Shared Sub DwmGetColorizationColor(ByRef ColorizationColor As UInteger, ByRef ColorizationOpaqueBlend As Boolean)
End Sub
Private Function UintToColor(ByVal argb As UInteger)
Dim bytes As Byte() = BitConverter.GetBytes(argb)
Dim b = bytes(0)
Dim g = bytes(1)
Dim r = bytes(2)
Dim a = bytes(3)
Dim result As Color = Color.FromArgb(a, r, g, b)
Return result
End Function
Dim windowColor
Dim windowBlend
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.Show()
DwmGetColorizationColor(windowColor, windowBlend)
Me.BackColor = UintToColor(windowColor)
End Sub
End Class
' 3808456647'を試してみてください。そのAPIは 'System.Drawing.Color'型と互換性がないようです。 –
@SamAxe:奇妙なことは、ドキュメントによると、色の値は 'System.Drawing.Color'のように' 0xAARRGGBB'として保存されるべきです。 –
まあ、楽しいだけのために、データ型をInt32に変更しようとしましたか? –