Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2010, 11:48   #31
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Цитата:
внутри твое класса сделай ещё один класс MyFont например
Ну я в примере выше показал, что я сделал класс SFont (Serializable Font)
Только конвертирование не работает из Sfont в Font. Так как свойства Font только для чтения.
Casper-SC вне форума Ответить с цитированием
Старый 15.03.2010, 12:45   #32
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

так не надо конвертировать. создал класс SFont
в нём нужные тебе поля (имя шрифта, размер, стиль - я думаю больше и не надо)
когда инициализируешь класс пишешь - SFont sf = new SFont("Tahoma",10,FontStyle.Bold);
а потом выдираешь свойства, где тебе это надо
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 15.03.2010, 15:48   #33
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Ну хорошо, вот я создал
Код:
SFont sf = new SFont("Tahoma", 10, FontStyle.Bold);
Дальше я создаю форму сообщения (выводится при срабатывании), как мне richTextBox.Font присвоить SFont? Просто выводимому сообщению надо сообщить как то, какой у него будет шрифт.
Casper-SC вне форума Ответить с цитированием
Старый 15.03.2010, 16:03   #34
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

к Font нельзя присовить SFont
можно так:
Код:
SFont sf = new SFont("Tahoma",10,FontStyle.Bold);
richTextBox.Font = new Font(sf.FontName,sf.FontSize,sf.FontSt);
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 15.03.2010, 16:49   #35
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Метод переделал вот так

Код:
        public static Font EncodeSFontToFont(SFont sfont, Font prototypeFont)
        {
            Font font = new Font(sfont.fontFamily, sfont.sizeInPoints, sfont.Style, sfont.unit, sfont.gdiCharSet, sfont.gdiVerticalFont);
            return font;
        }
Использую вот так:
Код:
textBoxMsg.Font = Converter.EncodeSFontToFont(alarm.FontMsg, textBoxMsg.Font);
В классе AlarmClock в конструкторе инициализирую вот так:
Код:
SFont FontMsg = new SFont();
В конструкторе класса Sfont поля инициализирую вот так: (не все, похоже там и не все нужны)
Код:
        public SFont()
        {
            bold = false;
            underline = false;
            gdiVerticalFont = false;
            isSystemFont = true;
            italic = false;
            strikeout = false;
        }
И когда доходит дело до конвертирования этим методом, что самый первый в этом посту, то там на строке:
Код:
Font font = new Font(sfont.fontFamily, sfont.sizeInPoints, sfont.Style, sfont.unit, sfont.gdiCharSet, sfont.gdiVerticalFont);
показывает, что ошибка типа sfont == null, теперь с этим не могу разобраться, нда ужОс просто
Casper-SC вне форума Ответить с цитированием
Старый 15.03.2010, 16:55   #36
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

я бы не стал мутить кучу не нужных методов. а просто сделал пару переменных в обычном классе.
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 15.03.2010, 17:04   #37
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Короче эту задачу не решить, я даже не знаю какие поля нужны для SFont, а какие можно откинуть, вот и наделал все, что есть.
Поудалял все эти методы нафик.

Код:
SFont sf = new SFont("Tahoma",10,FontStyle.Bold);
richTextBox.Font = new Font(sf.FontName,sf.FontSize,sf.FontSt);

Может есть способ, не в xml сохранять, без сериализации?

Последний раз редактировалось Casper-SC; 15.03.2010 в 17:23.
Casper-SC вне форума Ответить с цитированием
Старый 15.03.2010, 18:30   #38
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Надо же, у меня получилось, а сериализация опять не пашет, а вот с передачей и получением параметров всё норм.
Код:
namespace WindowsFormsApplication1
{
    [Serializable]
    public class SFont
    {
        public String name { get; set; } //возвращает имя начертания этого шрифт
        public float size { get; set; } //Размер максимального пробела данного шрифта
        public Byte Style { get; set; }  //возвращает сведения о стиле данного шрифта

        /// <summary>
        /// Конструктор  класса SFont
        /// </summary>
        /// <param name="FontName">Название шрифта</param>
        /// <param name="FontSize">Размер шрифта</param>
        /// <param name="fontStyle">Стиль шрифта в Byte (нужно использовать Converter)</param>
        public SFont(String FontName, float FontSize, Byte fontStyle)
        {
            name = FontName;
            size = FontSize;
            Style = fontStyle;
        }
    }

    class SColor
    {

    }
}
Конвертер, чтобы от класа Font небыло и намёка
Код:
    public static class Converter
    {
        /// <summary>
        /// Конвертирует из числа от 1 до 5 в FontStyle
        /// </summary>
        /// <param name="number">число от 1 до 5</param>
        /// <returns>FontStyle</returns>
        public static FontStyle ToFontStyle(byte number)
        {
            FontStyle fs = new FontStyle();
            switch (number)
            {
                case 1: fs = FontStyle.Regular;
                    return fs;
                case 2: fs = FontStyle.Bold;
                    return fs;
                case 3: fs = FontStyle.Italic;
                    return fs;
                case 4: fs = FontStyle.Strikeout;
                    return fs;
                case 5: fs = FontStyle.Underline;
                    return fs;
            }
            return fs;
        }

        public static Byte ToNumber(FontStyle fs)
        {
            Byte i = 0;
            switch (fs)
            {
                case FontStyle.Regular: i = 1;
                    return i;
                case FontStyle.Bold: i = 2;
                    return i;
                case FontStyle.Italic: i = 3;
                    return i;
                case FontStyle.Strikeout: i = 4;
                    return i;
                case FontStyle.Underline: i = 5;
                    return i;
            }
            return i;
        }

Последний раз редактировалось Casper-SC; 15.03.2010 в 18:58.
Casper-SC вне форума Ответить с цитированием
Старый 16.03.2010, 11:54   #39
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

не в xml без сериализации это пожалуйста. System.IO и FileStream и погнал.

но можно сделать сериализацию не в XML (чтобы было не читабельно)
для этого используй BinaryFormater. о нём мы уже говорили в этой теме.
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 16.03.2010, 12:29   #40
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Да я тоже про этот BinaryFormater только вчера вспомнил и всё теперь работает. Пока только сохранял, времени небыло пробовать остальное.

Кстати что за конструкция такая со словом using, как перевести, чтобы было без слова using, это надо чтобы понять как эта конструкция работает.
Код:
            BinaryFormatter formatter = new BinaryFormatter();
            using (Stream stream = File.Create(Application.StartupPath +"\\"+ "List.bin"))
            {
                formatter.Serialize(stream, list);
                stream.Close();
            }

Последний раз редактировалось Casper-SC; 16.03.2010 в 12:40.
Casper-SC вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создать двумерный массив, заполнить случайными числами, сохранить в файл buba Паскаль, Turbo Pascal, PascalABC.NET 7 17.03.2015 20:08
Передать массив базового абстрактного класса функциям производных классов mishutka999 Общие вопросы C/C++ 2 01.12.2009 14:08
запись классов в бинарный файл Feannewedd Общие вопросы C/C++ 6 29.06.2009 10:11
Массив классов nns2009 Общие вопросы C/C++ 15 03.02.2009 00:47