程序代码
<%
Option explizite
Klasse FiveStarredFlag
Private Breite
Private Höhe
Privater Füller
Privates SizeImage
Private Dateigröße
Private BitMap()
Private Sub Class_Initialize
Höhe = 200
Breite = 300
Füller = (32 - Breite Mod 32) Mod 32
SizeImage = (Breite + Füller) * Höhe 8
FileSize = SizeImage + 14 + 40 + 8
ReDim BitMap(Width + Filler - 1, Height - 1)
Star Height * 0,25, Height * 0,75, Height * 0,15, 0
Sternbreite / 3, Höhe * 0,9, Höhe * 0,05, 120,9637565320735
Sternbreite * 0,4, Höhe * 0,8, Höhe * 0,05, 98,13010235415598
Sternbreite * 0,4, Höhe * 0,65, Höhe * 0,05, 74,0546040990771
Sternbreite / 3, Höhe * 0,55, Höhe * 0,05, 51,3401917459099
End Sub
Private Sub Class_Terminate
Response.ContentType = "image/bmp"
Response.BinaryWrite FileHeader & InfoHeader & Palette & ImageData
End Sub
Private Sub Star(x, y, r, a)
Dim pi, v, d, i, j, k, m2
pi = 3,1415926535897932
v = r * Sin(pi * 0,1) / Sin(pi * 0,7)
Für j = -r Zu r
Für i = -r Zu r
d = Sqr(i ^ 2 + j ^ 2)
Wenn d < v Dann
BitMap(x + i, y + j) = 1
ElseIf d < r Then
Wenn i = 0, dann
Wenn j > 0, dann ist k = 90, sonst ist k = -90
Anders
k = Atn(j / i) * 180 / pi
Wenn i < 0, dann ist k = k + 180
Ende Wenn
k = k - a - 18
Während k < 0 ist
k = k + 360
Wend
Während k >= 360
k = k - 360
Wend
Während k >= 72
k = k - 72
Wend
Wenn k > 36, dann ist k = 72 - k
m2 = d ^ 2 + r ^ 2 - d * r * 2 * Cos(k * pi / 180)
Wenn (m2 + r ^ 2 - d ^ 2) / (Sqr(m2) * r * 2) > Cos(pi * 0,1) Dann
BitMap(x + i, y + j) = 1
Ende wenn
Ende wenn
Nächste
Nächste
End Sub
Private Function CWord(I16)
CWord = ChrB(I16 und &HFF) & ChrB(I16 256 und &HFF)
Endfunktion
Private Funktion CDWord(I32)
CDWord = ChrB(I32 und &HFF) & ChrB(I32 256 und &HFF) & ChrB(I32 65536 und &HFF) & ChrB(I32 &HFFFFFF und &HFF)
Funktion beenden
„www.knowsky.com
Private Eigenschaft FileHeader abrufen
Const FileType = &H4D42
Const Reserviert1 = 0
Const Reserved2 = 0
Const OffBits = 62
FileHeader = CWord(FileType) & CDWord(FileSize) & CWord(Reserved1) & CWord(Reserved2) & CDWord(OffBits)
End-Property
Private Property Get InfoHeader
Const InfoSize = 40
Konst. Ebenen = 1
Const BitCount = 1
Const-Komprimierung = 0
Const XPelsPerMeter = 0
Const YPelsPerMeter = 0
Const ClrUsed = 0
Const ClrImportant = 0
InfoHeader = CDWord(InfoSize) & CDWord(Width) & CDWord(Height) & CWord(Planes) & CWord(BitCount) & CDWord(Compression) & CDWord(SizeImage) & CDWord(XPelsPerMeter) & CDWord(YPelsPerMeter) & CDWord(ClrUsed ) & CDWord(ClrImportant)
Endeigenschaft
Privateigentum Palette abrufen
Const BackColor = &HFF0000
Const ForeColor = &HFFFF00
Palette = CDWord(BackColor) & CDWord(ForeColor)
End-Eigenschaft
Private Eigenschaft ImageData abrufen
Dim i, j
ImageData = ""
Für j = 0 bis Höhe - 1
Für i = 0 bis Breite + Füller – 1 Schritt 8
ImageData = ImageData & ChrB(BitMap(i, j) * 128 oder BitMap(i + 1, j) * 64 oder BitMap(i + 2, j) * 32 oder BitMap(i + 3, j) * 16 oder BitMap( i + 4, j) * 8 oder BitMap(i + 5, j) * 4 oder BitMap(i + 6, j) * 2 oder BitMap(i + 7, j))
Nächste
Nächste
End-Eigenschaft
Beenden Sie den Unterricht
mit der neuen FiveStarredFlag
Ende mit
%>