Как нарисовать пиксель на экране без окна в F #? - PullRequest
0 голосов
/ 12 января 2019

Я нашел этот ответ для Python здесь Вопрос / Ответ . Я хотел знать, как я могу сделать это в F # и что конкретно мне нужно импортировать и как получить контекст устройства. Я понимаю, что лучше использовать окно, но я не хочу слишком для проекта, над которым я работаю. Я предполагаю, что есть способ получить ширину / высоту экрана тоже.

1 Ответ

0 голосов
/ 13 января 2019

Вот минимальный пример, который использует функции GetDC и SetPixel, чтобы сделать то же самое, что и пример 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, вам наверняка захочется нарисовать что-нибудь в окне, принадлежащем вашему приложению.

...