Ok, I found my errors. The following code works as expected:

open System
open System.Drawing
open System.Windows.Forms
open SlimDX
open SlimDX.Direct2D
open SlimDX.DirectWrite
open SlimDX.Windows

[<STAThread()>]
do
let form = new RenderForm("SlimDX + Direct2D + F#")
let renderTarget = new WindowRenderTarget(new SlimDX.Direct2D.Factory(), new WindowRenderTargetProperties(Handle=form.Handle, PixelSize=form.ClientSize))
let brush1 = new SolidColorBrush(renderTarget, Color4(Color.LightSlateGray))
let brush2 = new SolidColorBrush(renderTarget, Color4(Color.CornflowerBlue))
let rect = new RectangleF(100.0f, 100.0f, 200.0f, 50.0f)
let textFormat = new TextFormat(new SlimDX.DirectWrite.Factory(), "Segoe UI", SlimDX.DirectWrite.FontWeight.Normal, SlimDX.DirectWrite.FontStyle.Normal, SlimDX.DirectWrite.FontStretch.Normal, 32.0f, "DE_de")

form.ClientSizeChanged.AddHandler(new EventHandler(fun o e -> (renderTarget.Resize(form.ClientSize) |> ignore)))
form.Paint.AddHandler(new PaintEventHandler(fun o e -> do
if not renderTarget.IsOccluded then
renderTarget.BeginDraw()
renderTarget.Transform <- Matrix3x2.Identity
renderTarget.Clear(Color4(Color.White))

let mutable startPoint = PointF.Empty
let mutable endPoint = new PointF(renderTarget.Size.Width, renderTarget.Size.Height)

while startPoint.X < renderTarget.Size.Width do
endPoint.X <- startPoint.X
renderTarget.DrawLine(brush1, startPoint, endPoint, 0.5f)
startPoint.X <- startPoint.X + 10.0f

startPoint <- PointF.Empty
endPoint.X <- renderTarget.Size.Width
endPoint.Y <- 0.0f

while startPoint.Y < renderTarget.Size.Height do
endPoint.Y <- startPoint.Y
renderTarget.DrawLine(brush1, startPoint, endPoint, 0.5f)
startPoint.Y <- startPoint.Y + 10.0f

renderTarget.DrawText("Hello World", textFormat, rect, brush1)

let rect1 = new RectangleF(renderTarget.Size.Width / 2.0f - 50.0f, renderTarget.Size.Height / 2.0f - 50.0f, 100.0f, 100.0f)
let rect2 = new RectangleF(renderTarget.Size.Width / 2.0f - 100.0f, renderTarget.Size.Height / 2.0f - 100.0f, 200.0f, 200.0f)

renderTarget.FillRectangle(brush1, rect1)
renderTarget.FillRectangle(brush2, rect2)

renderTarget.EndDraw() |> ignore
))

Application.Run(form)

for item in ObjectTable.Objects do
item.Dispose()

By on 12/18/2009 4:47 PM ()
IntelliFactory Offices Copyright (c) 2011-2012 IntelliFactory. All rights reserved.
Home | Products | Consulting | Trainings | Blogs | Jobs | Contact Us | Terms of Use | Privacy Policy | Cookie Policy
Built with WebSharper