コード例 #1
0
        private void AddFont(ObsProperty property, ObsData setting, List<Control> controls)
        {
            string name = property.Name;

            Label label = new Label
            {
                Width = 300,
                Height = 60,
                AutoSize = false,
                BorderStyle = BorderStyle.Fixed3D,
                TextAlign = ContentAlignment.MiddleCenter
            };

            Button button = new Button { Text = "Select..." };

            using (ObsData fontData = new ObsData(setting.GetObject(name)))
            {
                string family = fontData.GetString("face");
                //string style = fontData.GetString("style");	//not supported in Windows
                ObsFontFlags flags = (ObsFontFlags)fontData.GetInt("flags");

                label.Font = new Font(family, 25F, (FontStyle)flags); ;
                label.Text = family;
            }

            button.Click += (sender, args) =>
            {
                var fontDialog = new FontDialog();

                using (ObsData fontData = new ObsData(setting.GetObject(name)))
                {
                    float size = fontData.GetInt("size");
                    fontDialog.Font = new Font(label.Font.FontFamily, size, label.Font.Style);
                }

                if (fontDialog.ShowDialog() == DialogResult.OK)
                {
                    var font = fontDialog.Font;

                    using (ObsData fontData = new ObsData(setting.GetObject(name)))
                    {
                        fontData.SetString("face", font.Name.ToString());
                        fontData.SetString("style", "");	//not supported in Windows
                        fontData.SetInt("size", (int)font.SizeInPoints);
                        fontData.SetInt("flags", (int)font.Style);
                    }

                    view.PropertyChanged(property);

                    font = new Font(font.Name, 25f, font.Style);
                    label.Font = font;
                    label.Text = font.Name;
                }
            };

            controls.Add(label);
            controls.Add(button);
        }