程序代码
<%
Вариант явного
класса FiveStarredFlag
Частная ширина
Частная высота
Частный наполнитель
Частный размер изображения
Частный размер файла
Private BitMap()
Частный подкласс_Initialize
Высота = 200
Ширина = 300
Наполнитель = (32 - Ширина Mod 32) Mod 32
SizeImage = (Ширина + Наполнитель) * Высота 8
FileSize = SizeImage + 14 + 40 + 8
ReDim BitMap(Ширина + Заполнитель - 1, Высота - 1)
Высота звезды * 0,25, Высота * 0,75, Высота * 0,15, 0
Ширина звезды / 3, Высота * 0,9, Высота * 0,05, 120,9637565320735
Ширина звезды * 0,4, Высота * 0,8, Высота * 0,05, 98.13010235415598
Ширина звезды * 0,4, Высота * 0,65, Высота * 0,05, 74,0546040990771
Ширина звезды/3, Высота * 0,55, Высота * 0,05, 51,3401917459099
Завершить подчастный
подкласс_Terminate
Response.ContentType = "изображение/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)
Для j = -r To r
Для i = -r Для r
d = Sqr(i ^ 2 + j ^ 2)
Если d < v Тогда
BitMap(x + i, y + j) = 1
ИначеЕсли d < r Тогда
Если я = 0 Тогда
Если j > 0, то k = 90. Иначе k = -90.
Еще
k = Atn(j/i) * 180/пи
Если i < 0, то k = k + 180
Конец Если
k = k - a - 18
Пока к < 0
к = к + 360
Венд
В то время как к >= 360
к = к - 360
Венд
В то время как к >= 72
к = к - 72
Венд
Если k > 36, то k = 72 - k
m2 = d^2 + r^2 - d*r*2 * Cos(k*pi/180)
Если (m2 + r ^ 2 - d ^ 2)/(Sqr(m2) * r * 2) > Cos(pi * 0,1) Тогда
BitMap(x + i, y + j) = 1
Конец, если
Конец, если
Следующий
Следующий
Завершить
частную функцию CWord(I16)
CWord = ChrB(I16 и &HFF) & ChrB(I16 256 и &HFF)
Завершение функции
Частная функция CDWord(I32)
CDWord = ChrB(I32 и &HFF) & ChrB(I32 256 и &HFF) & ChrB (I32 65536 и &HFF) & ChrB (I32 &HFFFFFF и &HFF)
Конечная функция
'www.knowsky.com
Частная собственность Получить FileHeader
Константный тип файла = &H4D42
Константа Зарезервировано1 = 0
Константа Зарезервировано2 = 0
Конст OffBits = 62
FileHeader = CWord(FileType) & CDWord(FileSize) & CWord(Reserved1) & CWord(Reserved2) & CDWord(OffBits)
Конечная собственность
Частная собственность Get InfoHeader
Константный инфоразмер = 40
Константные плоскости = 1
Конст БитКаунт = 1
Константное сжатие = 0
Конст XPelsPerMeter = 0
Конст YPelsPerMeter = 0
Конст ClrUsed = 0
Конст КлрИмпортант = 0
InfoHeader = CDWord(InfoSize) & CDWord(Ширина) & CDWord(Высота) & CWord(Плоскости) & CWord(BitCount) & CDWord(Сжатие) & CDWord(SizeImage) & CDWord(XPelsPerMeter) & CDWord(YPelsPerMeter) & CDWord(ClrUsed) ) & CDWord(ClrImportant)
Конечная собственность
Частная собственность Получить палитру
Const BackColor = &HFF0000
Const ForeColor = &HFFFF00
Палитра = CDWord(BackColor) и CDWord(ForeColor)
Конечная собственность
Частная собственность Получить ImageData
Дим я, дж
Данные изображения = ""
Для j = 0 до высоты - 1
Для i = 0 То ширина + заполнитель — 1 Шаг 8
ImageData = ImageData & ChrB(BitMap(i, j) * 128 или BitMap(i + 1, j) * 64 или BitMap(i + 2, j) * 32 или BitMap(i + 3, j) * 16 или BitMap( i + 4, j) * 8 или BitMap(i + 5, j) * 4 или BitMap(i + 6, j) * 2 или BitMap(i + 7, j))
Следующий
Следующий
Конечная собственность
Завершение класса
с новым флагом FiveStarredFlag
Конец с
%>