Sie sind auf Seite 1von 3

C:\Users\xod\Desktop\CircularTextOBclasic\CircularTextEffect\ControlFontComboBox.

cs 1
1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Drawing;
5 using System.Drawing.Text;
6 using System.Windows.Forms;
7
8 namespace ControlExtensions
9 {
10 public class ControlFontComboBox : ComboBox
11 {
12 // Fields
13 private int _itemHeight;
14 private int _previewFontSize;
15 public string FontName;
16
17 // Events
18 public event EventHandler PreviewFontSizeChanged;
19
20 // Methods
21 public ControlFontComboBox()
22 {
23 DrawMode = DrawMode.Normal;
24 Sorted = true;
25 }
26
27 private void CalculateLayout()
28 {
29 using (Font font = new Font(Font.FontFamily, PreviewFontSize))
30 {
31 Size size = TextRenderer.MeasureText("yY", font);
32 _itemHeight = size.Height + 2;
33 }
34 }
35
36 public virtual void LoadFontFamilies()
37 {
38 foreach (FontFamily ff in FontUtil.UsableFontFamilies)
39 {
40 Items.Add(ff.Name);
41 }
42 }
43
C:\Users\xod\Desktop\CircularTextOBclasic\CircularTextEffect\ControlFontComboBox.cs 2
44 protected virtual void OnPreviewFontSizeChanged(EventArgs e)
45 {
46 PreviewFontSizeChanged?.Invoke(this, e);
47 CalculateLayout();
48 }
49
50 internal static class FontUtil
51 {
52 internal static readonly FontFamily[] UsableFontFamilies;
53
54 internal static int FindFontIndex(string familyName)
55 {
56 for (int i = 0; i < UsableFontFamilies.Length; i++)
57 {
58 if (UsableFontFamilies[i].Name == familyName)
59 {
60 return i;
61 }
62 }
63 return 0;
64 }
65
66 static FontUtil()
67 {
68 List<FontFamily> usableFonts = new List<FontFamily>();
69 using (InstalledFontCollection installedFonts = new InstalledFontCollection())
70 {
71 foreach (FontFamily font in installedFonts.Families)
72 {
73 if (font.IsStyleAvailable(FontStyle.Regular & FontStyle.Bold & FontStyle.Italic & FontStyle.Underline &
FontStyle.Strikeout))
74 usableFonts.Add(font);
75 }
76 }
77 UsableFontFamilies = usableFonts.ToArray();
78 }
79 }
80
81 // Properties
82 [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), EditorBrowsable
(EditorBrowsableState.Never)]
83 public new DrawMode DrawMode
84 {
C:\Users\xod\Desktop\CircularTextOBclasic\CircularTextEffect\ControlFontComboBox.cs 3
85 get =>
86 base.DrawMode;
87 set =>
88 base.DrawMode = value;
89 }
90
91 [DefaultValue(12), Category("Appearance")]
92 public int PreviewFontSize
93 {
94 get =>
95 _previewFontSize;
96 set
97 {
98 _previewFontSize = value;
99 OnPreviewFontSizeChanged(EventArgs.Empty);
100 }
101 }
102
103 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Browsable(false), EditorBrowsable
(EditorBrowsableState.Never)]
104 public new bool Sorted
105 {
106 get =>
107 base.Sorted;
108 set =>
109 base.Sorted = value;
110 }
111 }
112
113 }

Das könnte Ihnen auch gefallen