Как создать консольные приложения с высоким разрешением на MacOS на C# (если это вообще возможно)?

У меня есть простое консольное приложение на C#, которое создает фрактал. Я использую Visual Studio Community на macOS. Я создаю растровое изображение определенного размера (WXH). Для каждого пикселя назначается цвет .SetPixel, исходя из рассчитанного числа Мандельброта.

class Form1 : Form
{
  //..
  public Form1()
  {
    //..
    AutoScaleMode = AutoScaleMode.Dpi;
  }
  //..
  private void DrawMandelbrot(object o, PaintEventArgs ea)
  {
    Bitmap bm = new Bitmap(w, h);
    mandelb = CreateMandelbrot(bm);
    ea.Graphics.DrawImage(mandelb, xMandelb, yMandelb, w, h);
  }
}

Это работает отлично, за исключением того, что у меня экран с высоким разрешением на дюйм, и растровые изображения выглядят очень неровными.

Я пробовал такие вещи, как:

        Graphics graphics = this.CreateGraphics();
        dpiX = graphics.DpiX;

чтобы получить точек на дюйм, но это просто дает мне 96, что является разрешением Form, а не экрана.

Я старался bm.SetResolution(144.0F, 144.0F); непосредственно после создания растрового изображения, без успеха.

Я попробовал более сложные подходы, подобные найденным здесь, но это просто вылетало из программы. Вероятно (?), Потому что я на macos, все продвигаемые решения, которые предлагают загрузку.dll, как [DllImport("user32.dll")] не работает: System.DllNotFoundException: user32.dll,

Я пытался добавить this.AutoScaleDimensions = new System.Drawing.SizeF(200F, 200F); к методу, который инициализирует Form,

Даже переключение на WPF кажется проблематичным, если это вообще возможно в macOS. Хотите знать, если это вообще возможно, используя C#?

Мне не нужна вся программа для рендеринга точек на дюйм, но для создания растрового изображения пиксель за пикселем, вероятно, нужен другой подход для получения изображений с высоким разрешением? Было бы приемлемо просто сделать растровое изображение меньше, но с более высоким разрешением. Конечно, самым хорошим решением было бы создать полный Form приложение с несколькими строками кода с высоким разрешением на дюйм, основанное на доступных точках на дюйм экрана, без переписывания всего приложения как

Документация.NET действительно бесполезна, поэтому я надеюсь, что у кого-то здесь есть решение.

PS: вместо того, чтобы просто опустить голосование, я бы предпочел услышать критику моего поста. Это дубликат? Я рад слышать, где я могу найти ответ, искал часами. Вам нужно больше кода? Рад предоставить...

1 ответ

Visual Studio 2017 для Mac Поддержка разработки для MacOS/OS X

Visual Studio 2017 для Mac позволяет создавать консольные приложения и приложения Cocoa (для настольных компьютеров) для macOS. visualstudio.com

То есть НЕТ.NET Winforms и WPF.

Вы можете начать здесь: разработка MacOS с Visual Studio для Mac.

(Подсказка: это руководство Xamarin.Mac)

Другие вопросы по тегам