11月 18

WPFで右上のバツボタン(閉じるボタン)を表示しないようにする(VB2010,VB.NET)

WPFでタイトルバーのところは表示したいんだケド、右上のバツボタンは表示したくないという時
これで右上に出ているものが全て消え去ります。
VB2010にてのサンプルソース

Imports System.Runtime.InteropServices
Imports System.Windows.Interop
Class MainWindow
    <DllImport("user32.dll")> _
    Private Shared Function GetWindowLong(hWnd As IntPtr, nIndex As Integer) As Integer
    End Function
    <DllImport("user32.dll")> _
    Private Shared Function SetWindowLong(hWnd As IntPtr, nIndex As Integer, dwNewLong As Integer) As Integer
    End Function
    Const GWL_STYLE As Integer = -16
    Const WS_SYSMENU As Integer = &H80000
    Protected Overrides Sub OnSourceInitialized(e As EventArgs)
        MyBase.OnSourceInitialized(e)
        Dim handle As IntPtr = (New WindowInteropHelper(Me)).Handle
        Dim style = GetWindowLong(handle, GWL_STYLE)
        style = style And (Not WS_SYSMENU)
        SetWindowLong(handle, GWL_STYLE, style)
    End Sub
End Class


11月 17

WPFアニメーションのフレーム数を変更する

‘WPFアニメーションはデフォルトでは60フレーム/秒で動くらしいです。
が、スペックが低いPCでは厳しい場合もあるので、たとえば30フレーム/秒にする時はVB.NETでは、

System.Windows.Media.Animation.Timeline.DesiredFrameRateProperty.OverrideMetadata(GetType(System.Windows.Media.Animation.Timeline), New FrameworkPropertyMetadata(30))

と書くだけで変更する事ができる。


11月 17

WPFで画像の描画を高速化(cached composition)

Imageがコントロールに割りついているとして、VB2010でのサンプル

Dim bitmapCache = New BitmapCache()
bitmapCache.RenderAtScale = 1
Image.CacheMode = bitmapCache

とする事で、GPUのメモリにキャッシュされ、読み込みが早くなる。