Changeset 698 for trunk/ab5.0/ablib/src/Classes/System/Drawing/Color.ab
- Timestamp:
- Mar 31, 2009, 2:09:07 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ab5.0/ablib/src/Classes/System/Drawing/Color.ab
r635 r698 4 4 Namespace Drawing 5 5 6 Class Color 7 Public 8 Sub Color() 9 argb = MakeARGB(255, 0, 0, 0) ' Black 10 End Sub 11 12 Sub Color(ByRef c As Color) 13 argb = c.argb 14 End Sub 15 16 Sub Color(r As Byte, g As Byte, b As Byte) 17 argb = MakeARGB(255, r, g, b) 18 End Sub 19 20 Sub Color(a As Byte, r As Byte, g As Byte, b As Byte) 21 argb = MakeARGB(a, r, g, b) 22 End Sub 23 24 Sub Color(newArgb As System.Drawing.Imaging.ARGB) 25 argb = newArgb 26 End Sub 27 28 Function Operator ==(c As Color) As Boolean 29 Return Equals(c) 30 End Function 31 32 Function Operator <>(c As Color) As Boolean 33 Return Not Equals(c) 34 End Function 35 36 Function A() As Byte 37 A = (argb >> System.Drawing.Imaging.ALPHA_SHIFT) As Byte 38 End Function 39 40 Function R() As Byte 41 R = (argb >> System.Drawing.Imaging.RED_SHIFT) As Byte 42 End Function 43 44 Function G() As Byte 45 G = (argb >> System.Drawing.Imaging.GREEN_SHIFT) As Byte 46 End Function 47 48 Function B() As Byte 49 B = (argb >> System.Drawing.Imaging.BLUE_SHIFT) As Byte 50 End Function 51 52 Function Value() As System.Drawing.Imaging.ARGB 53 Value = argb 54 End Function 55 56 Sub Value(value As System.Drawing.Imaging.ARGB) 57 argb = value 58 End Sub 59 60 Sub SetFromCOLORREF(rgb As COLORREF) 61 If (rgb And &hff000000) = &h01000000 Then 62 Exit Sub ' パレットインデックス指定は無効 63 Else 64 argb = MakeARGB(255, GetRValue(rgb) As Byte, GetGValue(rgb) As Byte, GetBValue(rgb) As Byte) 65 End If 66 End Sub 67 68 Function ToCOLORREF() As COLORREF 69 ToCOLORREF = RGB(R, G, B) 70 End Function 71 /* 72 Function ToArgb() As ARGB 73 ToArgb = argb 74 End Function 75 */ 76 Static Function FromArgb(argb As System.Drawing.Imaging.ARGB) As Color 77 Return New Color(argb) 78 End Function 79 80 Static Function FromArgb(a As Byte, base As Color) As Color 81 Return New Color(a, base.R, base.G, base.B) 82 End Function 83 84 Static Function FromArgb(r As Byte, g As Byte, b As Byte) As Color 85 Return New Color(r, g, b) 86 End Function 87 88 Static Function FromArgb(a As Byte, r As Byte, g As Byte, b As Byte) As Color 89 Return New Color(a, r, g, b) 90 End Function 91 92 Override Function GetHashCode() As Long 93 Return argb As Long 94 End Function 95 96 Function Equals(c As Color) As Boolean 97 Return argb = c.argb 98 End Function 99 100 ' HSBを求める式はhttp://ofo.jp/osakana/cgtips/hsb.phtmlを参考にしました。 101 Function GetHue() As Single 102 Dim max As Long, min As Long, d As Long 103 Dim r = R 104 Dim g = G 105 Dim b = B 106 max = System.Math.Max(System.Math.Max(r, g), b) 107 min = System.Math.Min(System.Math.Min(r, g), b) 108 d = max - min 109 If g = max Then 110 Return ((b - r) As Double / d * 60.0 + 120.0) As Single 111 ElseIf b = max Then 112 Return ((r - g) As Double / d * 60 + 240) As Single 113 ElseIf g < b Then 114 Return ((g - b) As Double / d * 60 + 360) As Single 115 Else 116 Return ((g - b) As Double / d * 60) As Single 117 EndIf 118 End Function 119 120 Function GetSaturation() As Single 121 Dim r = R 122 Dim g = G 123 Dim b = B 124 Dim max = System.Math.Max(System.Math.Max(r, g), b) As Long 125 Dim min = System.Math.Min(System.Math.Min(r, g), b) As Long 126 Return ( (max - min) / max ) As Single 127 End Function 128 129 Function GetBrightness() As Single 130 Dim r = R 131 Dim g = G 132 Dim b = B 133 Dim max = System.Math.Max(System.Math.Max(r, g), b) 134 Return ( max * (1 / 255) ) As Single 135 End Function 136 137 /* 138 ' Common color constants 139 Const Enum 140 AliceBlue = &hFFF0F8FF 141 AntiqueWhite = &hFFFAEBD7 142 Aqua = &hFF00FFFF 143 Aquamarine = &hFF7FFFD4 144 Azure = &hFFF0FFFF 145 Beige = &hFFF5F5DC 146 Bisque = &hFFFFE4C4 147 Black = &hFF000000 148 BlanchedAlmond = &hFFFFEBCD 149 Blue = &hFF0000FF 150 BlueViolet = &hFF8A2BE2 151 Brown = &hFFA52A2A 152 BurlyWood = &hFFDEB887 153 CadetBlue = &hFF5F9EA0 154 Chartreuse = &hFF7FFF00 155 Chocolate = &hFFD2691E 156 Coral = &hFFFF7F50 157 CornflowerBlue = &hFF6495ED 158 Cornsilk = &hFFFFF8DC 159 Crimson = &hFFDC143C 160 Cyan = &hFF00FFFF 161 DarkBlue = &hFF00008B 162 DarkCyan = &hFF008B8B 163 DarkGoldenrod = &hFFB8860B 164 DarkGray = &hFFA9A9A9 165 DarkGreen = &hFF006400 166 DarkKhaki = &hFFBDB76B 167 DarkMagenta = &hFF8B008B 168 DarkOliveGreen = &hFF556B2F 169 DarkOrange = &hFFFF8C00 170 DarkOrchid = &hFF9932CC 171 DarkRed = &hFF8B0000 172 DarkSalmon = &hFFE9967A 173 DarkSeaGreen = &hFF8FBC8B 174 DarkSlateBlue = &hFF483D8B 175 DarkSlateGray = &hFF2F4F4F 176 DarkTurquoise = &hFF00CED1 177 DarkViolet = &hFF9400D3 178 DeepPink = &hFFFF1493 179 DeepSkyBlue = &hFF00BFFF 180 DimGray = &hFF696969 181 DodgerBlue = &hFF1E90FF 182 Firebrick = &hFFB22222 183 FloralWhite = &hFFFFFAF0 184 ForestGreen = &hFF228B22 185 Fuchsia = &hFFFF00FF 186 Gainsboro = &hFFDCDCDC 187 GhostWhite = &hFFF8F8FF 188 Gold = &hFFFFD700 189 Goldenrod = &hFFDAA520 190 Gray = &hFF808080 191 Green = &hFF008000 192 GreenYellow = &hFFADFF2F 193 Honeydew = &hFFF0FFF0 194 HotPink = &hFFFF69B4 195 IndianRed = &hFFCD5C5C 196 Indigo = &hFF4B0082 197 Ivory = &hFFFFFFF0 198 Khaki = &hFFF0E68C 199 Lavender = &hFFE6E6FA 200 LavenderBlush = &hFFFFF0F5 201 LawnGreen = &hFF7CFC00 202 LemonChiffon = &hFFFFFACD 203 LightBlue = &hFFADD8E6 204 LightCoral = &hFFF08080 205 LightCyan = &hFFE0FFFF 206 LightGoldenrodYellow = &hFFFAFAD2 207 LightGray = &hFFD3D3D3 208 LightGreen = &hFF90EE90 209 LightPink = &hFFFFB6C1 210 LightSalmon = &hFFFFA07A 211 LightSeaGreen = &hFF20B2AA 212 LightSkyBlue = &hFF87CEFA 213 LightSlateGray = &hFF778899 214 LightSteelBlue = &hFFB0C4DE 215 LightYellow = &hFFFFFFE0 216 Lime = &hFF00FF00 217 LimeGreen = &hFF32CD32 218 Linen = &hFFFAF0E6 219 Magenta = &hFFFF00FF 220 Maroon = &hFF800000 221 MediumAquamarine = &hFF66CDAA 222 MediumBlue = &hFF0000CD 223 MediumOrchid = &hFFBA55D3 224 MediumPurple = &hFF9370DB 225 MediumSeaGreen = &hFF3CB371 226 MediumSlateBlue = &hFF7B68EE 227 MediumSpringGreen = &hFF00FA9A 228 MediumTurquoise = &hFF48D1CC 229 MediumVioletRed = &hFFC71585 230 MidnightBlue = &hFF191970 231 MintCream = &hFFF5FFFA 232 MistyRose = &hFFFFE4E1 233 Moccasin = &hFFFFE4B5 234 NavajoWhite = &hFFFFDEAD 235 Navy = &hFF000080 236 OldLace = &hFFFDF5E6 237 Olive = &hFF808000 238 OliveDrab = &hFF6B8E23 239 Orange = &hFFFFA500 240 OrangeRed = &hFFFF4500 241 Orchid = &hFFDA70D6 242 PaleGoldenrod = &hFFEEE8AA 243 PaleGreen = &hFF98FB98 244 PaleTurquoise = &hFFAFEEEE 245 PaleVioletRed = &hFFDB7093 246 PapayaWhip = &hFFFFEFD5 247 PeachPuff = &hFFFFDAB9 248 Peru = &hFFCD853F 249 Pink = &hFFFFC0CB 250 Plum = &hFFDDA0DD 251 PowderBlue = &hFFB0E0E6 252 Purple = &hFF800080 253 Red = &hFFFF0000 254 RosyBrown = &hFFBC8F8F 255 RoyalBlue = &hFF4169E1 256 SaddleBrown = &hFF8B4513 257 Salmon = &hFFFA8072 258 SandyBrown = &hFFF4A460 259 SeaGreen = &hFF2E8B57 260 SeaShell = &hFFFFF5EE 261 Sienna = &hFFA0522D 262 Silver = &hFFC0C0C0 263 SkyBlue = &hFF87CEEB 264 SlateBlue = &hFF6A5ACD 265 SlateGray = &hFF708090 266 Snow = &hFFFFFAFA 267 SpringGreen = &hFF00FF7F 268 SteelBlue = &hFF4682B4 269 Tan = &hFFD2B48C 270 Teal = &hFF008080 271 Thistle = &hFFD8BFD8 272 Tomato = &hFFFF6347 273 Transparent = &h00FFFFFF 274 Turquoise = &hFF40E0D0 275 Violet = &hFFEE82EE 276 Wheat = &hFFF5DEB3 277 White = &hFFFFFFFF 278 WhiteSmoke = &hFFF5F5F5 279 Yellow = &hFFFFFF00 280 YellowGreen = &hFF9ACD32 281 End Enum 282 283 ' Shift count and bit mask for A, R, G, B components 284 285 Const Enum 286 AlphaShift = 24 287 RedShift = 16 288 GreenShift = 8 289 BlueShift = 0 290 End Enum 291 292 Const Enum 293 AlphaMask = &hff000000 294 RedMask = &h00ff0000 295 GreenMask = &h0000ff00 296 BlueMask = &h000000ff 297 End Enum 298 */ 299 Static Function MakeARGB(a As Byte, r As Byte, g As Byte, b As Byte) As System.Drawing.Imaging.ARGB 300 MakeARGB = (((b As System.Drawing.Imaging.ARGB) << System.Drawing.Imaging.BLUE_SHIFT) Or _ 301 ((g As System.Drawing.Imaging.ARGB) << System.Drawing.Imaging.GREEN_SHIFT) Or _ 302 ((r As System.Drawing.Imaging.ARGB) << System.Drawing.Imaging.RED_SHIFT) Or _ 303 ((a As System.Drawing.Imaging.ARGB) << System.Drawing.Imaging.ALPHA_SHIFT)) 304 End Function 305 306 Protected 307 argb As System.Drawing.Imaging.ARGB 308 End Class 6 TypeDef Color = DWord 'ARGB 309 7 310 8 End Namespace
Note:
See TracChangeset
for help on using the changeset viewer.