Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.12.2010, 17:33
Parez вне форума Посмотреть профиль Отправить личное сообщение для Parez Найти все сообщения от Parez
  № 1  
Ответить с цитированием
Parez

Регистрация: Nov 2010
Адрес: Ярославль
Сообщений: 249
Tools Задание цвета пикселам находящимся внутри круга

Здравствуйте.
Хочу сделать инструмент "кисть", которая рисует именно кругами (как базовые кисти в фотошопе) определённого радиуса. По окружности изменять пикселы получается без проблем. Но требуется также заполнить внутреннюю область круга.
Как это можно сделать без сильных затрат?

Старый 04.12.2010, 19:43
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Я так понял, вы программно пытаетесь закрашивать определенные пиксели.
Нарисуйте круг и отрисуйте его в ваш битмап.

Старый 04.12.2010, 23:25
Reon вне форума Посмотреть профиль Отправить личное сообщение для Reon Найти все сообщения от Reon
  № 3  
Ответить с цитированием
Reon
 
Аватар для Reon

Регистрация: Oct 2005
Сообщений: 97
Кусочек кода покажите что ли, совсем ничего непонятно...

Старый 05.12.2010, 01:44
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 4  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Рисование отображаемого объекта в битмапу же есть, там можете хоть круг - хоть звездочку нарисовать.
про это же речь?
Код AS3:
var shape:Shape = new Shape();
....
var g:Graphics = shape.graphics;
g.beginFill(0x0000ff);
g.drawCircle(0, 0, 10);
g.endFill();
....
bitmapData = new BitmapData(640, 480);
....
bitmapData.draw(shape, new Matrix(1, 0, 0, 1, mouseX, mouseY));

Старый 05.12.2010, 12:49
Parez вне форума Посмотреть профиль Отправить личное сообщение для Parez Найти все сообщения от Parez
  № 5  
Ответить с цитированием
Parez

Регистрация: Nov 2010
Адрес: Ярославль
Сообщений: 249
Да да да. Это. Я тоже об этом думал, но не был уверен. спасибо.

Ещё сразу спрошу, чтобы новую тему не создавать:
Если быстро двигать мышку, линия прорисовывается отдельными кругами (постоянно прерывается). Отрисовывание происходит по событию MOUSE_MOVE. Соответственно чем меньше кисть, тем больше эти разрывы заметны. То есть проблема именно в отлавливании события. Видимо оно реагирует недостаточно часто. Пробовал так же делать через ENTER_FRAME с фреймрейтом 120, лучше не стало.
В чём может быть проблема? Возможно стоит рисовать так же в промежуточных координатах, которые не были отловлены при перемещении мыши? Или всё-таки есть более оптимальное решение?


Последний раз редактировалось Parez; 05.12.2010 в 14:30.
Старый 05.12.2010, 13:04
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 6  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
видел простой класс под вашу задачу... BitmapDataEx кажется называется.

Старый 05.12.2010, 16:28
Parez вне форума Посмотреть профиль Отправить личное сообщение для Parez Найти все сообщения от Parez
  № 7  
Ответить с цитированием
Parez

Регистрация: Nov 2010
Адрес: Ярославль
Сообщений: 249
Что это конкретно за класс? Как он работает и что вообще делает?
Вот что имеется на данный момент:
Вложения
Тип файла: zip Brush Drawing.zip (27.2 Кб, 31 просмотров)


Последний раз редактировалось Parez; 05.12.2010 в 18:39.
Старый 05.12.2010, 17:49
medvedya2 вне форума Посмотреть профиль Отправить личное сообщение для medvedya2 Найти все сообщения от medvedya2
  № 8  
Ответить с цитированием
medvedya2
[+1 09.03.11]

Регистрация: Mar 2010
Сообщений: 128
В самой ОС регистрация мышки с прерываниями.
Можно нарисовать четырех угольник от предыдущего положения мышки до текущего, чтобы как-бы линия была от круга до круга - это если просто кисточка из круга.

Или можно по по циклу из кругов нарисовать линию, даже с формулами мороки не будет.
Код AS3:
//должно заработать, правда может зависнуть :)
//не проверял
угол=Math.atan2(круг.y-mouseY , круг.x-mouseX);
while(int(mouseX)!=int(круг.x) && int(mouseY)!=int(круг.y))
{
   круг.x=круг.x - Math.cos(угол);
   круг.y=круг.x - Math.sin(угол)
 
}
круг.x=int(mouseX);
круг.y=int(mouseY);


Последний раз редактировалось medvedya2; 05.12.2010 в 17:52.
Старый 05.12.2010, 17:56
Contemplator вне форума Посмотреть профиль Отправить личное сообщение для Contemplator Найти все сообщения от Contemplator
  № 9  
Ответить с цитированием
Contemplator
 
Аватар для Contemplator

Регистрация: Nov 2009
Сообщений: 425
глупость, конечно, возможно сморожу... но если кисть должна быть круглой - что мешает просто-напросто рисовать линией нужной ширины, после растрировать? типы концов линий, на сколько помню - настраиваемые, равно как и скругление углов =))
__________________
можно, даже нужно на "ты", - Я лишён предрассудков относительно "Вы" =))
но чур без фамильярностей...


Последний раз редактировалось Contemplator; 05.12.2010 в 18:06.
Старый 05.12.2010, 18:36
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 10  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
глупость, конечно, возможно сморожу.
По крайней мере нагужать машину будет меньше раз эдак в 100.
Всем известный Paint при рисовании карандашом НЕ опрашивает мышь со скоростью 9000 раз в секунду (это технически невозомжно/не поможет), а рисует линии между последней и новой точкой

Если углы у широких линий не достаточно "круглые" - придется применить немного математики и рисовать последнее приращение замкнутым контуром с заливкой


Последний раз редактировалось expl; 05.12.2010 в 18:39.
Создать новую тему Ответ Часовой пояс GMT +4, время: 09:01.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 09:01.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.