Ignore:
Timestamp:
Mar 31, 2009, 2:09:07 PM (15 years ago)
Author:
イグトランス (egtra)
Message:

GDI+をコンパイルできるように修正。FontFamily, Penの追加。サンプルとして、Step 32のGDI+版を制作。
(#56)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/ablib/src/Classes/System/Drawing/Color.ab

    r635 r698  
    44Namespace Drawing
    55
    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
     6TypeDef Color = DWord 'ARGB
    3097
    3108End Namespace
Note: See TracChangeset for help on using the changeset viewer.