Files
2026-06-01 13:23:34 +09:00

75 lines
3.0 KiB
C#

using KssSmaPlaLib.Ini;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace KssSmaPlaLib.Forms.ContextMenuFunction
{
public static class FontUxer
{
/// <summary>
/// フォント選択
/// </summary>
/// <param name="form"></param>
/// <param name="section"></param>
/// <param name="key"></param>
/// <param name="defaultFont"></param>
/// <param name="resultFont"></param>
/// <returns></returns>
public static bool SelectFont(Form form, string section, string key, Font defaultFont, out Font resultFont)
{
// デフォルト値
resultFont = new Font(defaultFont, defaultFont.Style);
using (var dlg = new FontDialog())
{
var defaultFontCsv =
defaultFont.Name + "," +
defaultFont.Size.ToString() + "," +
defaultFont.Bold.ToString();
var iniFontCsv = IniHelper.ReadValue(null, section, key, defaultFontCsv);
var fontItems = iniFontCsv.Split(',');
if (fontItems.Length != 3) fontItems = defaultFontCsv.Split(',');
if (float.TryParse(fontItems[1], out var size) == false) size = defaultFont.Size;
if (bool.TryParse(fontItems[2], out var bold) == false) bold = defaultFont.Bold;
dlg.Font = new Font(fontItems[0], size, bold ? FontStyle.Bold : FontStyle.Regular);
dlg.AllowVerticalFonts = false;
// 文字飾り(取り消し線と下線)を表示させない
dlg.ShowEffects = false;
var result = dlg.ShowDialog(form);
if (result == DialogResult.Cancel) return false;
// INI保存
var fontCsv =
dlg.Font.Name + "," +
dlg.Font.Size.ToString() + "," +
dlg.Font.Bold.ToString();
IniHelper.WriteValue(null, section, key, fontCsv);
// 出力
resultFont = new Font(dlg.Font, dlg.Font.Style);
return true;
}
}
public static Font GetFont(string section, string key, Font defaultFont)
{
var defaultFontCsv =
defaultFont.Name + "," +
defaultFont.Size.ToString() + "," +
defaultFont.Bold.ToString();
var iniFontCsv = IniHelper.ReadValue(null, section, key, defaultFontCsv);
var fontItems = iniFontCsv.Split(',');
if (fontItems.Length != 3) fontItems = defaultFontCsv.Split(',');
if (float.TryParse(fontItems[1], out var size) == false) size = defaultFont.Size;
if (bool.TryParse(fontItems[2], out var bold) == false) bold = defaultFont.Bold;
return new Font(fontItems[0], size, bold ? FontStyle.Bold : FontStyle.Regular);
}
}
}