如何在F#中在没有窗口的情况下绘制到屏幕上的像素?

时间:2019-01-12 02:00:12

标签: f# drawing screen pixel

我在Question/Answer找到了针对Python的答案。我想知道如何在F#中执行此操作,以及具体需要导入什么以及如何获取设备上下文。我知道最好使用窗口,但我也不想为正在处理的项目使用窗口。我猜也有一种获取屏幕宽度/高度的方法。

1 个答案:

答案 0 :(得分:3)

这是一个最小的示例,该示例使用GetDCSetPixel函数与所引用问题中的Python示例完全相同:

open System
open System.Runtime.InteropServices

[<DllImport("user32.dll",EntryPoint="GetDC")>]
extern IntPtr GetDC(IntPtr ptr)

[<DllImport("gdi32.dll")>]
extern uint32 SetPixel(IntPtr hdc, int X, int Y, uint32 crColor);

let dc = GetDC(IntPtr.Zero)

for i in 0 .. 255 do
  let r, g, b = 255, i, 255
  let clr = (r <<< 16) ||| (g <<< 8) ||| b
  SetPixel(dc, i, 0, uint32 clr) |> ignore

也就是说,我无法想象这将是一件好事的情况。如果您要创建一个明智的Windows应用程序,那么您肯定会想要在属于您应用程序的窗口中绘制任何内容。