Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2015, 17:35   #1
MorgunZ
Пользователь
 
Регистрация: 12.03.2015
Сообщений: 60
По умолчанию canvas

Всем привет.
Программа получает js скрипт, если его запустить в браузере - он нарисует в канвасе картинку.
Моя задача - получить эту картинку в формате png/jpg.
Грубо говоря скрипт рисования конвертировать в картинку уже нарисованную.
Натолкните на идею алгоритма. Вообще ничего не лезет в голову, вот пример такого скрипта
Код:
<script>
var canvas = document.getElementById('slog');
var ctx = canvas.getContext('2d');
ctx.lineJoin = 'bevel';
function Cw(w){ ctx.lineWidth = w; }
function Cc(c){ ctx.strokeStyle = c; ctx.fillStyle = c; }
function CS(){ ctx.stroke(); Cw(5); Cc('#DE3F25'); ctx.beginPath(); }
function CF(){ ctx.fill(); Cw(5); Cc('#DE3F25'); ctx.beginPath(); }
function CM(x,y){ ctx.moveTo(x,y); }
function CL(x,y){ ctx.lineTo(x,y); }
function CQ(x,y,a,b){ ctx.quadraticCurveTo(x,y,a,b); }
function CA(x,y,r,a,b,c){ ctx.arc(x,y,r,a,b,c); }
function CR(x,y,w,h,a){ ctx.translate(x,y); ctx.rotate(a); ctx.rect(0,0,w,h); ctx.setTransform(1,0,0,1,0,0); }
Cw(5); Cc('#DE3F25');
Cc('#de3f25');CM(85,33);CL(84,61);CS();
Cc('#de3f25');CM(45,85);CL(44,114);CS();
Cc('#de3f25');CM(243,38);CL(242,67);CS();
Cc('#de3f25');CM(152,114);CQ(156,118,162,118);CL(164,118);CQ(176,119,177,104);CQ(177,90,165,90);CS();
Cc('#de3f25');CM(105,91);CQ(101,87,95,87);CS();
Cc('#de3f25');CM(121,74);CL(120,116);CS();
Cc('#de3f25');CM(165,90);CL(163,90);CQ(157,89,153,93);CS();
Cc('#de3f25');CM(137,89);CL(136,117);CS();
Cc('#de3f25');CM(242,47);CQ(247,39,257,39);CQ(265,39,265,47);CL(264,68);CS();
Cc('#de3f25');CM(63,32);CL(62,52);CQ(62,60,70,61);CQ(80,61,84,53);CS();
Cc('#de3f25');CM(101,41);CQ(105,33,113,34);CQ(119,34,119,42);CL(118,62);CS();
Cc('#de3f25');CM(153,35);CL(152,64);CS();
Cc('#de3f25');CM(135,74);CL(137,76);CL(139,74);CL(137,72);CL(135,74);CS();
Cc('#de3f25');CM(119,42);CQ(123,34,131,34);CQ(137,35,137,43);CL(136,63);CS();
Cc('#de3f25');CM(152,43);CQ(157,35,165,36);CQ(171,36,171,44);CL(170,64);CS();
Cc('#de3f25');CM(45,93);CQ(49,85,59,86);CQ(67,86,67,94);CL(66,114);CS();
Cc('#de3f25');CM(27,70);CL(29,72);CL(31,70);CL(29,68);CL(27,70);CS();
Cc('#de3f25');CM(171,44);CQ(175,36,183,36);CQ(189,36,189,45);CL(188,65);CS();
Cc('#de3f25');CM(95,87);CL(93,87);CQ(81,86,80,101);CQ(80,115,92,115);CL(94,115);CQ(100,116,104,112);CS();
Cc('#de3f25');CM(153,89);CL(151,132);CS();
Cc('#de3f25');CM(29,85);CL(28,113);CS();
Cc('#de3f25');CM(101,33);CL(100,62);CS();
Cc('#de3f25');CM(49,37);CQ(49,31,39,31);CQ(29,31,29,37);CQ(28,43,38,45);CQ(49,48,48,54);CQ(48,60,38,59);CQ(28,59,28,53);CS();
Cc('#de3f25');CM(217,37);CL(215,37);CQ(203,37,202,51);CQ(202,65,214,66);CL(216,66);CQ(228,66,229,52);CQ(229,38,217,37);CS();
Cc('#de3f25');CM(105,87);CL(104,120);CQ(104,130,93,130);CQ(87,130,85,127);CS();
</script>
Делать через webbrowser - не очень идея, ибо будет все в 1000 потоков. Сильно грузить систему будет
MorgunZ вне форума Ответить с цитированием
Старый 15.03.2015, 17:40   #2
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

это просто текст, распарсите его и рисуйте средствами delphi
lomastr_ вне форума Ответить с цитированием
Старый 15.03.2015, 17:41   #3
MorgunZ
Пользователь
 
Регистрация: 12.03.2015
Сообщений: 60
По умолчанию

в канвас не силен не в JS не в Delphi, трудно переводить.
Но сейчас буду пробовать
MorgunZ вне форума Ответить с цитированием
Старый 15.03.2015, 17:51   #4
MorgunZ
Пользователь
 
Регистрация: 12.03.2015
Сообщений: 60
По умолчанию

Начал функции переводить,
Код:
procedure TForm1.Button7Click(Sender: TObject);
procedure CW(C:TImage;w:integer); begin C.Canvas.Pen.Width := W; end;
procedure CC(C:Timage; cl : Tcolor); begin C.Canvas.Pen.Color := cl; end;
begin

end;
да вот не совсем пойму что это такое

Код:
function CS(){ ctx.stroke(); Cw(5); Cc('#DE3F25'); ctx.beginPath(); }
точнее как это
Код:
ctx.stroke()
и
Код:
ctx.beginPath();
и
Код:
ctx.fill()
перевести в делфи.

Последний раз редактировалось MorgunZ; 15.03.2015 в 17:54.
MorgunZ вне форума Ответить с цитированием
Старый 15.03.2015, 19:35   #5
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

прочитайте что это и для чего
lomastr_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
canvas zloysadovod Мультимедиа в Delphi 0 19.05.2011 09:14
canvas+js alexander1111 JavaScript, Ajax 2 25.03.2011 17:06
[canvas] Fiery Fox Мультимедиа в Delphi 3 22.02.2011 02:28
Canvas StartMis Общие вопросы Delphi 0 24.01.2010 16:26
Canvas Jai Общие вопросы Delphi 7 15.05.2009 13:11