Как сделать так, чтобы кнопка оставалась видимой на форме 1 при использовании directx3d
У меня есть кнопка на форме 1 для выхода пользователя из программы. Кнопка не отображается, так как DirectX 9 рисует всю форму и закрывает кнопку. Как я могу контролировать, какая часть формы будет нарисована? Я программирования в vb.net визуальный Studio2017 и я с помощью управляемого с поддержкой DirectX 9
Что я уже пробовал:
Я попытался изменить цвет на белый, так как он был черным, но кнопка по-прежнему не отображается. Я могу нажать на кнопку, потому что знаю, где я ее разместил. Я пытаюсь узнать о DirectX, и теперь, когда у меня установлен VS 2017, я хочу посмотреть, смогу ли я что-нибудь сделать с DirectX 9. До сих пор я наконец-то получил этот 3D-треугольник,отображаемый в C#, C++ и vb.net-да. Кнопка не появляется ни на одном из этих языков.
Вот этот код:
Option Strict Off Option Explicit On Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms Imports Microsoft.DirectX Imports Microsoft.DirectX.Direct3D Imports System.Threading Public Class Form1 Inherits System.Windows.Forms.Form Private device As Direct3D.Device Dim buffer As VertexBuffer Public Sub New() InitializeComponent() End Sub Public Sub Initialize() Dim present As PresentParameters = New PresentParameters present.BackBufferCount = 1 present.BackBufferFormat = Manager.Adapters(0).CurrentDisplayMode.Format present.BackBufferHeight = Me.Height present.BackBufferWidth = Me.Width present.Windowed = True present.SwapEffect = SwapEffect.Discard device = New Device(0, DeviceType.Hardware, Me, CreateFlags.SoftwareVertexProcessing, present) device.RenderState.CullMode = Cull.None End Sub Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load *** This probably will be the problem but I don't know! *** Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.Opaque, True) Me.Height = 500 Me.Width = 600 Me.Text = "DirectX Tutorial using Visual Basic" Initialize() creat_vertxbuffer() End Sub Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint Dim vertices As CustomVertex.TransformedColored() = New CustomVertex.TransformedColored(0 To 2) {} 'create an array of vertices vertices(0).Position = New Vector4(150, 100, 0, 1) vertices(0).Color = Color.Red.ToArgb 'encode color in Argb vertices(1).Position = New Vector4(Me.Width / 2 + 100, 100, 0, 1) vertices(1).Color = Color.Green.ToArgb vertices(2).Position = New Vector4(250, 300, 0, 1) vertices(2).Color = Color.Yellow.ToArgb device.Clear(ClearFlags.Target, Color.Black, 1.0, 0) device.BeginScene() 'all drawings after this line device.VertexFormat = CustomVertex.TransformedColored.Format device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, vertices) device.EndScene() 'all drawings before this line device.Present() Me.Invalidate() 'redraw End Sub Sub creat_vertxbuffer() buffer = New VertexBuffer(GetType(CustomVertex.TransformedColored), 3, device, Usage.None, CustomVertex.TransformedColored.Format, Pool.Managed) Dim ver(2) As CustomVertex.TransformedColored ver(0) = New CustomVertex.TransformedColored(50, 10, 0, 1, Color.Red.ToArgb) ver(1) = New CustomVertex.TransformedColored(200, 15, 0, 1, Color.Green.ToArgb) ver(2) = New CustomVertex.TransformedColored(10, 200, 0, 1, Color.Red.ToArgb) buffer.SetData(ver, 0, LockFlags.None) End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Application.Exit() End Sub End Class