2017-04-06 9 views
0

でオーバーフローが生じました( "自動車" から):算術演算は、Windowsがvb.netでフォームアプリケーション作成するとき、私はこのエラーに遭遇したColor.FromArgb

227 R:55182 G:14876783 b:3808456647 argb:3808456647

+0

' 3808456647'を試してみてください。そのAPIは 'System.Drawing.Color'型と互換性がないようです。 –

+0

@SamAxe:奇妙なことは、ドキュメントによると、色の値は 'System.Drawing.Color'のように' 0xAARRGGBB'として保存されるべきです。 –

+0

まあ、楽しいだけのために、データ型をInt32に変更しようとしましたか? –

答えて

0

私はあなたがバイトサイズのチャンクに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 
関連する問題