Форум: "Начинающим";
Текущий архив: 2009.05.17;
Скачать: [xml.tar.bz2];
ВнизПомогите с оптимизацией кода Найти похожие ветки
← →
novai (2009-04-01 06:40) [0]есть код:
bgcolor:=Collections[n].bgcolor;
for yy:=0 to Collections[n].ImageDraw.Height-1 do
for xx:=0 to Collections[n].ImageDraw.Width-1 do
if Collections[n].ImageDraw.Canvas.Pixels[xx,yy]<>bgcolor then
Сanvas.Pixels[Collections[n].left+xx,Collections[n].top+yy]:=Collections[n].ImageDraw.Canvas.Pixels[xx,yy];
Collections[n] - TBitmap с небольшими дополнениями (bgcolor)
Сanvas - канва формы
Идея такая: в Collections[n].ImageDraw лежит текущая картинка анимации (спрайта), каждые 10мс идет перерисовка всей сцены, рисуется фон а потом вот этим кодом спрайты, в коде, если пиксел "прозрачный", то не рисуем, а если нет, то рисуем на канвасе формы, но этот вариант медленный, чем заменить? как я понимаю scanline не подойдет? Подскажите.
← →
novai (2009-04-01 06:55) [1]пока переделал
Collections[n].ImageDraw.Transparent:=true;
canvas.Draw(Collections[n].X,Collections[n].Y, Collections[n].ImageDraw);
Collections[n].ImageDraw.Transparent:=false;
но думаю что можно еще быстрее?
← →
Б (2009-04-01 06:58) [2]Ж)
- Canvas.Draw(X, Y, BMP).
- Прозрачный цвет надо устанавливать растрам или где там.
- Рисовать надо на PaintBox.
- Scanline оставь на эффекты.
← →
icWasya © (2009-04-01 14:38) [3]А если хочешь работать попиксельно - изучай TBitmap.ScanLines
← →
FireMan_Alexey © (2009-04-06 09:15) [4]Попробуй OPENGL! Тебе понравиться :)
Winamp с OPENGL-ом работает
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.05.17;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c