|
2D-программирование Вопросы, касающиеся двумерного программирования |
17.05.2009, 21:14
|
#1
|
Нуждающийся
Регистрация: 07.02.2009
Сообщений: 92
Написано 16 полезных сообщений (для 38 пользователей)
|
Заливка
Как реализовать в blitz заливку, как в paint'е? Т.е. закрасить произвольную область, ограниченную пикселями, или хотяб фигуру из произвольных линий.
|
(Offline)
|
|
17.05.2009, 21:33
|
#2
|
ПроЭктировщик
Регистрация: 10.03.2009
Адрес: Казахстан->Кустанай
Сообщений: 147
Написано 12 полезных сообщений (для 23 пользователей)
|
Ответ: Заливка
Ты имеешь ввиду 2D объект?
; Flip/Backbuffer()/Rect Example
; Set Graphics Mode
Graphics 640,480
; Go double buffering
SetBuffer BackBuffer()
; Setup initial locations for the box
box_x = -20 ; negative so it will start OFF screen
box_y = 100
While Not KeyHit(1)
Cls ; Always clear screen first
Rect box_x,box_y,20,20,1 ; Draw the box in the current x,y location
Flip ; Flip it into view
box_x = box_x + 1 ; Move the box over one pixel
If box_x = 640 Then box_x=-20 ; If it leaves the Right edge, reset its x location
Wend
Выдрал из хелпа по блицу(ваще очень хорошая вешь этот хелп).
Так вот примерно так оно и выглядит.
|
(Offline)
|
|
18.05.2009, 00:40
|
#3
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Заливка
рекурсия
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
18.05.2009, 06:25
|
#4
|
Нуждающийся
Регистрация: 07.02.2009
Сообщений: 92
Написано 16 полезных сообщений (для 38 пользователей)
|
Ответ: Заливка
Рисовать закрашенные прямоугольники я умею, ето не то. Есть область, ограниченная пикселями, теперь как её закрасить?
|
(Offline)
|
|
19.05.2009, 16:24
|
#5
|
Нуждающийся
Регистрация: 07.02.2009
Сообщений: 92
Написано 16 полезных сообщений (для 38 пользователей)
|
Ответ: Заливка
Неужели никто не делал заливку на blitz? Сам пробовал делать, но оставался след до края на одну из сторон, смотря откуда начинал заливать.
|
(Offline)
|
|
19.05.2009, 21:23
|
#6
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Заливка
Сообщение от impersonalis
рекурсия
|
сам правь мой говнокод (как минимум надо ввести коррецию границы буффера)
Function ZapiliBufferCvetom(buffer%,px%,py%,r%,g%,b%)
Local pixcolor%=ReadPixel(px,py,buffer)
Local npixcolor%=256^3+(256^2)*r+256*g+b
LockBuffer(buffer)
RecZap(buffer,px,py,pixcolor,npixcolor)
UnlockBuffer(buffer)
End Function
Function RecZap(buffer,px,py,col,newcol%)
If ReadPixelFast(px,py,buffer)<>col Return
WritePixelFast(px,py,newcol,buffer)
RecZap(buffer,px-1,py,col,newcol)
RecZap(buffer,px+1,py,col,newcol)
RecZap(buffer,px,py-1,col,newcol)
RecZap(buffer,px,py+1,col,newcol)
End Function
Graphics 800,600,32,2
SetBuffer BackBuffer()
Color 255,255,0
Local GeomObjType%
Local XO%,YO%,WO%,HO%
For i=1 To 10
GeomObjType=Rand(1,2)
XO=Rand(0,300)
XO=Rand(0,300)
WO=Rand(0,300)
HO=Rand(0,300)
Select GeomObjType
Case 1
Rect XO,YO,WO,HO,0
Case 2
Oval XO,YO,WO,HO,0
End Select
Next
Color 255,0,0
While Not KeyHit(1)
If MouseHit(1)
AppTitle "wait.."
ZapiliBufferCvetom(BackBuffer(),MouseX(),MouseY(),ColorRed(),ColorGreen(),ColorBlue())
Color Rand(0,255),Rand(0,255),Rand(0,255)
EndIf
AppTitle ""
Flip
Wend
End
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.05.2009, 21:54
|
#7
|
Нуждающийся
Регистрация: 07.02.2009
Сообщений: 92
Написано 16 полезных сообщений (для 38 пользователей)
|
Ответ: Заливка
Спасиб, то что нужно. Да и алгоритм побыстрее моего будет (я все пиксели обходил 2 циклами).
|
(Offline)
|
|
20.05.2009, 02:08
|
#8
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Заливка
XO=Rand(0,300)
XO=Rand(0,300)
|
XO=Rand(0,300)
YO=Rand(0,300)
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Заливка фигуры цветом ??? |
bms2008 |
Основной форум |
1 |
15.12.2008 17:09 |
Часовой пояс GMT +4, время: 20:09.
|