Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Создание CropTool ( аналог фотошопа ) - проблемы с dashed line , scale (http://www.flasher.ru/forum/showthread.php?t=151862)

in4core 07.03.2011 16:11

Создание CropTool ( аналог фотошопа ) - проблемы с dashed line , scale
 
Вложений: 4
Вообщем то суть темы в шапке.

Вот так я создаю дашт лайн.

Код AS3:

private function getDashedLine():BitmapData
                {
                        var sh:Shape = new Shape();
                        sh.graphics.lineStyle ( 1 , 0 , 1);
                        sh.graphics.lineTo ( 5 , 0 );
                        sh.graphics.lineStyle ( 1, 0 , 0 );
                        sh.graphics.moveTo ( 5 , 0);
                        sh.graphics.lineTo ( 10 , 0);
                        sh.graphics.moveTo ( 0 , 0);
                        sh.graphics.lineStyle ( 1 , 0 , 1);
                        sh.graphics.lineTo ( 0 , 5);
                        sh.graphics.moveTo ( 0 , 5);
                        sh.graphics.lineStyle ( 1, 0 , 0 );
                        sh.graphics.lineTo ( 0 , 10);
 
                        var bData:BitmapData = new BitmapData( sh.width , sh.height , true , 0 );
                        bData.draw ( sh );
 
                        sh = null;
 
                        return bData;
                }

Ок создали.

Вешаем

Код AS3:

private function drawDynamicRect(e:MouseEvent):void 
 
                {
 
                        _dynamicRect.graphics.clear();
                        _dynamicRect.graphics.lineStyle ( 1 , 0 , 1 , true, 'none' );
                        _dynamicRect.graphics.lineBitmapStyle ( _dashed );
                        _dynamicRect.graphics.beginFill ( 0, 0 );
                        _dynamicRect.graphics.drawRect ( 0 , 0, _area.mouseX - _dynamicRect.x, _area.mouseY - _dynamicRect.y );
                        _dynamicRect.graphics.endFill();
 
                        e.updateAfterEvent();
                }

Все хорошо, квадратик наш рисуется ( событие кстати MOUSE_MOVE) , но иногда в 80% как раз случаев, пропадают края нашей битмап линии... пробовал округлять все координаты - пофиг все равно косячит.

Вложение 26146

Вот так косячит

А нормального эффекта удается только в 10% случаях достич

Вложение 26147

Что можете посоветовать?



Другой вопрос уже конкретно по скейлу самого CropTool.

Вот изначальный вариант

Вложение 26148

Далее просто начинаю по маусМув менять ширину объекта.

Вложение 26149

И как видно на рисунке, справа пикселя на 1-2 съехало наше чудо. Начинает оно съзежать по какой то странной закономерности. Например до 50 пх не меняется, потом резко на 1 пиксель слетает, потом до 200 не меняется и т.д. Закономерность поймать не могу. Может кто то сталкивался с такими проблемами. Жду вашей помощи. Спасибо

nOobCrafter 07.03.2011 21:06

http://www.silin.su/#AS3/geom/dash
+ перерисовка или Scale9Grid, а зачем вам растр (для него тоже есть аналог scale9Grid - scaleBitmap_v122)?
гг ну и в догонку:
http://code.google.com/p/stroep/sour...ls/CropUtil.as

maxkar 07.03.2011 21:59

Вы не понимаете, как работает заливка (и stroke как ее частный случай). Рекомендую почитать здесь.

В вашем случае правда контур определяется не "заливкой", а линией. Это область, покрываемая установленным stroke. Но все остальное остается тем же.

Теперь рекомендую на клетчатой бумаге нарисовать хотя бы 4 соседних квадрата с нужным stroke (два по горизонтали и два по вертикали), всего будет 20х20 клеток, и на нем "повырезать" различные прямоугольники. Это как раз и покажет, что выводится в "неправильных" случаях, а также объяснит, почему все это работает ровно в 10% существующих случаев :) Да и ваши скриншоты закономерность очень хорошо показывают.

Кстати, если упражнение выполнять честно, станет видно, что на самом деле пунктир шириной в "полпикселя" а не в целый пиксель ;).

P.S. По второму вопросу код нужно смотреть, совершенно не понятно, о чем идет речь.

in4core 07.03.2011 22:38

Цитата:

гг ну и в догонку:
http://code.google.com/p/stroep/sour...ls/CropUtil.as
У меня в отличие от этого полный редактор. не на 5 строк )) а на 300-400 ))) Как сделать вырезку, это понятно, и вообще мне впринципе все понятно)).

Добавлено через 1 минуту
Тему можно закрыть. думаю сам разбирусь.


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

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