Преобразовать строку в изображение и сохранить текстовый файл строки, как в изображении

То, что вы пытаетесь сделать, абсолютно законно - вы действительно можете преобразовать строку в селектор, а затем передать этот селектор в пункт меню.

Однако вы пытаетесь использовать синтаксис буквенного выбора селектора для инициализации Selector, давая этому языку построить Selector в качестве аргумента (который просто синтаксически неверен), где на самом деле вы можете просто передать Selector, возвращенный NSSelectorFromString, на вызов инициализатора NSMenuItem.

Синтаксис буквенного синтаксиса #selector используется, когда у вас есть «фиксированный» селектор, в котором вы хотите создать Selector для (например, метод экземпляра класса, в котором вы находитесь). NSSelectorFromString предназначен для таких случаев, как ваш, где селектор является переменной (теперь, когда в Swift 2.2 действительно имеется некоторый синтаксис, заданный для #selector литералов!) [/ ​​G2]

import Cocoa

class MenuArrayObject
{
    var title: String = "Foo"
    var subMenuTitles: [String] = ["foo"]
    var subMenuSelectors:  [String] = ["foobar"]
}

let menuArrayObject = MenuArrayObject()

let indexMenu = NSMenu()

for (i, submenuTitle) in menuArrayObject.subMenuTitles.enumerate() {
    let selectorStr = menuArrayObject.subMenuSelectors[i]
    let selector = NSSelectorFromString(selectorStr)
    let item = NSMenuItem(title: submenuTitle, action: selector, keyEquivalent: "")

    indexMenu.addItem(item)
}
0
задан gunnerone 18 January 2019 в 17:42
поделиться

1 ответ

Как я уже упоминал в своем комментарии, вы не можете установить шрифт, размер шрифта или поля в текстовом файле. Что можно и нельзя делать в текстовом файле: https://www.computerhope.com/issues/ch001872.htm Вы можете сделать это с помощью расширенного текстового файла (.rtf) следующим образом. Я использовал пакет nuget "DotNetRtfWriter".

using HooverUnlimited.DotNetRtfWriter;
...

public void SaveMyFile(string datastring)
{
    RtfDocument doc = new RtfDocument(
        HooverUnlimited.DotNetRtfWriter.PaperSize.Letter,
        PaperOrientation.Portrait,
        Lcid.English);

    doc.Margins[Direction.Top] = 1 * 72;
    doc.Margins[Direction.Left] = 1.25f * 72;
    doc.Margins[Direction.Bottom] = 1 * 72;
    doc.Margins[Direction.Right] = 1.25f * 72;

    doc.SetDefaultFont("LinoScript");
    RtfParagraph para = doc.AddParagraph();
    RtfCharFormat format = para.AddCharFormat();
    format.FontSize = 24;
    para.SetText(datastring);
    doc.Save(@textBox1.Text.Trim() + numericUpDown1.Value.ToString() + "image.rtf");
}
0
ответ дан gunnerone 18 January 2019 в 17:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: