Dobrý den, Nainstaloval jsem DirectX_SDK podle návodu v tutoriále na této stránce. Přidal jsem obě knihovny: Microsoft.DirectX a Microsoft.DirectX.DirectDraw. Po napsání kódu v prvním díle se mi zobrazil formulář, ale barvy nejsou nikde. Předem díky za odpověď. Zde je kód:
Imports Microsoft.DirectX
Imports Microsoft.DirectX.DirectDraw
Public Class Form1
Dim dev As Device 'objekt, který reprezentuje zařízení (grafickou kartu resp. výstup na monitor).
Dim backBuffer As Surface, BackBufferDesc As SurfaceDescription 'objekt, který popisuje jeho vlastnosti a použití.
Dim frontBuffer As Surface, FrontBufferDesc As SurfaceDescription 'objekt, který popisuje jeho vlastnosti a použití.
Dim clip As Clipper 'slouží k vymezení oblasti renderování na formulář
Public Sub createDevice()
'vytvořit a nastavit zařízení
dev = New Device()
dev.SetCooperativeLevel(Me, CooperativeLevelFlags.FullscreenExclusive)
End Sub
Public Sub createBuffers()
'kontrola jestli je okno v popředí
If Not Me.Focused Then Exit Sub
'nastavit zařízení
dev.SetCooperativeLevel(Me, CooperativeLevelFlags.FullscreenExclusive)
'vytvořit frontBuffer
If frontBuffer IsNot Nothing Then
frontBuffer.Restore()
Else
FrontBufferDesc = New SurfaceDescription()
FrontBufferDesc.SurfaceCaps.PrimarySurface = True
FrontBufferDesc.SurfaceCaps.Flip = True
FrontBufferDesc.SurfaceCaps.Complex = True
FrontBufferDesc.BackBufferCount = 1
frontBuffer = New Surface(FrontBufferDesc, dev)
End If
'vytvořit backBuffer
If backBuffer IsNot Nothing Then
backBuffer.Restore()
Else
BackBufferDesc = New SurfaceDescription()
BackBufferDesc.SurfaceCaps.BackBuffer = True
backBuffer = frontBuffer.GetAttachedSurface(BackBufferDesc.SurfaceCaps)
End If
'nastavit oříznutí
clip = New Clipper(dev)
clip.Window = Me
frontBuffer.Clipper = clip
End Sub
Private Sub Timer1_Tick(sender As Object, e As System.EventArgs) Handles Timer1.Tick
'kontrola
If Not Me.Created Then Exit Sub
If frontBuffer Is Nothing Or backBuffer Is Nothing Then Exit Sub
If Not Me.Focused Then Exit Sub
Try
'vykresli scénu na BackBuffer
backBuffer.ColorFill(Color.DarkSlateBlue)
'nastavit výplň na 1 (jednolitá) a barvu výplně na zelenou
backBuffer.FillStyle = 1
backBuffer.FillColor = Color.Green
'vykreslíme čtverec
backBuffer.DrawBox(200, 300, 500, 500)
'převrátit buffery
frontBuffer.Flip(backBuffer, FlipFlags.Wait)
Catch ex As Exception
'po obnovení z minimalizace
If ex.GetType Is GetType(SurfaceLostException) Then
createBuffers()
End If
End Try
End Sub
Private Sub Form1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
'ukončení programu
If e.KeyCode = Keys.Escape Then
Timer1.Enabled = False
End
End If
End Sub
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
'vytvořit a nastavit zařízení
createDevice()
'vytvořit Buffer
createBuffers()
'spustit časovač
Timer1.Enabled = True
End Sub
End Class
|