Как создать консольные приложения с высоким разрешением на 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)