Вверх ↑
Этот топик читают: Гость
Ответов: 3655
Рейтинг: 69
#16: 2008-02-25 17:18:10 ЛС | профиль | цитата
nesco писал(а):
А посещать хоть можно, вдруг захочу бросить

можно - но курить на балкон
карма: 0

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#17: 2008-02-27 02:21:24 ЛС | профиль | цитата
А как вам в работе вот такой компонент -- Img_Gradient



Слева отрисовка прямо на форме (Handle), справа -- на PaintBox'e (Bitmap)

Режим прямоугольного градиента готов полностью, остался треугольный.
В данном компоненте применяется API-функция GradientFill, откуда и такое быстродействие.
карма: 22

0
файлы: 1img_gradient_001.png [6.4KB] [431]
Ответов: 8928
Рейтинг: 823
#18: 2008-02-27 09:43:51 ЛС | профиль | цитата
nesco, usec - это мили-, микро-, нано-секунды
карма: 19

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#19: 2008-02-27 09:55:28 ЛС | профиль | цитата
usec - это микро (символа МЮ нету)
карма: 22

1
Голосовали:Астрамак
Ответов: 8928
Рейтинг: 823
#20: 2008-02-27 10:18:11 ЛС | профиль | цитата
nesco, спасибо, просветил
На некоторых форумах спасибо говорят кнопочкой
карма: 19

0
Ответов: 3514
Рейтинг: 184
#21: 2008-02-27 14:55:40 ЛС | профиль | цитата
А на нашем плюсиком
------------ Дoбавленo:

nesco, а сколько цветов можно выбирать? Ну вот например на твоём изображении их три. Можно два или более?
Может быть кому нибудь когда нибудь захочется сделать радугу.
------------ Дoбавленo:

Или не три (на твоём изображении)?
карма: 0
0
Ответов: 5227
Рейтинг: 587
#22: 2008-02-27 15:46:36 ЛС | профиль | цитата
nesco у меня в старом пакете 3.62 уже был такой компонент от (Author - Amper) и назывался он GradientPanel, а чем твой будет отличатся если предыдущий тебе известен?...
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 1305
Рейтинг: 29
#23: 2008-02-27 16:10:03 ЛС | профиль | цитата
Астрамак писал(а):
Или не три

Два, видимо
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#24: 2008-02-27 16:31:46 ЛС | профиль | цитата
nesco, еще большее увеличение скорости работы даст перенос всех графических приметивов(а не только картинок) на базу FTCG с разделением на Фигуры, Кисти, Канвы и прочие. Скажем если посмотреть элемент Line и его реализацию doDraw для Bitmap, то можно увидеть, что там примерно 2/3 кода можно выкинуть, если сделать отдельно элементы Pen(doColor, doWidth) и Line(doDraw, doMoveTo, doLineTo), т.е. применить такой же подход как и в OpenGL.
карма: 27
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#25: 2008-02-27 16:59:38 ЛС | профиль | цитата
Астрамак писал(а):
Может быть кому нибудь когда нибудь захочется сделать радугу

Нет, их только два.
andrestudio писал(а):
nesco у меня в старом пакете 3.62 уже был такой компонент от (Author - Amper) и назывался он GradientPanel,

Совершенно несравним, ни по скорости, ни по функционалу (и -- о Господи, опять (Author - Amper)). Компонент реализован c нуля, не опираясь ни на какой внешний KOL и разные приблуды, чисто на функции API -- GradientFill, той самой, которая применяется в Office, и компонент позволяет отрисовывать на любой поверхности (Bitmap или Handle) -- это графический компонент, а не панель. Кроме того, хочу добавить, что на данный момент этот компонент уже поддерживает все те типы двухцветного градиента, которые вы можете увидеть в Office (там нет настраиваемого градиента больше чем с двумя цветами, слишком сложна его настройка, да и реализация тоже), включая центральный градиент.

Dilma писал(а):
реализацию doDraw для Bitmap
Да, я это заметил, тк на основании его реализации и сделан Img_Gradient.
Да, конечно, можно иметь такой набор базовых функций отрисовки для FTCG. Я потихоньку зрею к этому, но чувствую, что еще ранова-то мне туда соваться.
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#26: 2008-02-27 18:47:27 ЛС | профиль | цитата
а зачем соваться? Убираем все ReadXXX и заменяем их непосредственно на названия точек и св-тв элемента. Ну и весь код в println заворачиваем. Получаем всего три строки для отрисовки линии на контексте любого элемента:


#hws
lng.decl_loc_var(h, 'integer')
println(h, ' := GetDC(', handle, ');')
println('movetoex(', h, ', ', x1, ', ', y1, ', nil);')
println('lineto(', h, ', ', x2, ',', y2, ');')

а вот пример с элементом CustomCode:
code_8495.txt
------------ Дoбавленo:

вот такая схема на стандартных элементах


Add(For,14132473,210,63)
{
End=40000
link(onEvent,1540346:doDraw,[])
}
Add(Button,2905006,154,63)
{
Left=150
Top=55
link(onClick,14132473:doFor,[])
}
Add(Img_Line,1540346,266,63)
{
DrawSource=1
link(Point1,8838912:Point,[])
link(Point2,10428738:Point,[(286,55)(328,55)])
}
Add(PointXY,8838912,273,14)
{
X=10
Y=10
}
Add(PointXY,10428738,322,14)
{
X=10
Y=100
}

выполняется примерно за секунду. Тоже самое, собранное на рассыпухе в FTCG выполняется примерно вдвое быстрее(100 тыс итераций против 40).
Причем код получаем полностью компактный - ничего лишнего:

#pas
procedure TClassFTCG_Tools_1050E60.event_doCompare(var Data:TData; index:word);
var
h1:integer;
i4:integer;
begin
h1 := GetDC(str2int(ToString(Data)));
val2 := h1;
for i4 := 0 to 180000 do
begin
movetoex(val2, 10, 10, nil);
lineto(val2, 10, 100);
end;
end;
карма: 27
0
файлы: 1code_8495.txt [765B] [274]
Разработчик
Ответов: 26163
Рейтинг: 2127
#27: 2008-02-27 23:32:47 ЛС | профиль | цитата
Спасибо за подробное разъяснение, я бы сам с этим долго разбирался. Вообще, очень интересно, с виду ничего лишнего, разве что только вот это, не совсем понятно зачем --

  h1 := GetDC(str2int(ToString(Data)));
val2 := h1;
Вот это -- str2int(ToString(Data)), не очень быстрая операция, особенно в цикле, но для данного примера, вполне пойдет.
А вот так -- val2 := GetDC(str2int(ToString(Data)));, почему нельзя сделать

------------ Дoбавленo:


Вот, выпускаю в свет первую (надеюсь, последнюю ) версию Img_Gradient

Пример в архиве (расчитан на компоненты b168). Жду отзывов и предложению (радугу не предлагать )

См. топик ниже -- ver 2.00
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#28: 2008-02-28 10:35:52 ЛС | профиль | цитата
nesco писал(а):
не очень быстрая операция, особенно в цикле

ввиду отсутсвия типа TData в пользовательской части кодогенератора передача данных между двумя концепциями схемопостроения(внешним миром и FTCG) идет через тип string

#hws
event(s, e_str('ToString(Data)'))

nesco писал(а):
почему нельзя сделать

можно, если написать честный компонент, предоставляющий доступ к h1 через нижнюю точку
карма: 27
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#29: 2008-02-28 11:32:20 ЛС | профиль | цитата
Dilma, а как CustomCode в среду воткнуть, а то *.ini файла на SVN нет
------------ Дoбавленo:

Упростил Img_Gradient, теперь стиль выбирается одним свойством -- ver 2.00
карма: 22

0
файлы: 1img_gradient_2_00.zip [6.5KB] [187]
Администрация
Ответов: 15295
Рейтинг: 1519
#30: 2008-02-28 13:06:51 ЛС | профиль | цитата
этот элемент стандартен для любого пакета FTCG. Добавил
карма: 27
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)