Вверх ↑
Этот топик читают: Гость
Ответов: 157
Рейтинг: 1
#1: 2011-04-08 10:23:46 ЛС | профиль | цитата
Пытаюсь скопировать картинку в буфер вот такой фоновой схемой но ничего не работает

code_23265.txt

Но зато вот этот код прекрасно работает

code_23266.txt

подскажите где накосячил.
------------ Дoбавленo в 10.23:
Схема копирования PNG файлов в фоновом режиме неработает напроч , решил сделать все подругому имя файла выводится через Edit вот схема

Add(Clipboard,14721384,567,189)
{
}
Add(PNG,11549027,420,196)
{
Point(doBitmap)
Point(FileName)
link(onBitmap,14721384:doPutBitmap,[])
link(FileName,11420431:Text,[(426,170)(370,170)])
}
Add(Application,4193992,189,56)
{
}
Add(ArrayEnum,9999913,196,112)
{
link(onItem,15853451:doReplace,[])
link(Array,4193992:Params,[])
}
Add(Hub,9444780,91,105)
{
link(onEvent1,4193992:doProcessMessages,[(147,111)(147,62)])
link(onEvent2,9999913:doEnum,[])
}
Add(Replace,15853451,245,112)
{
SubStr=""
DestStr="\"
link(onReplace,11420431:doText,[])
}
Add(Hub,8037046,301,196)
{
OutCount=3
link(onEvent1,11549027:doLoad,[])
link(onEvent2,11549027:doBitmap,[(406,209)(406,216)])
}
Add(Edit,11420431,364,112)
{
Left=10
Top=10
Width=380
Height=30
link(onChange,8037046:doEvent1,[(408,118)(408,160)(289,160)(289,202)])
}



Но теперь всплыла другая проблема компонент PNG не правильно загружает некоторые файлы , ниже приведу пример:

Оригинальный спрайт.


То что копируется в буфер обмена хайасмом.


Это фишка или глюк ? и как с ним бороться ?

карма: 0

0
файлы: 2code_23265.txt [873B] [138], code_23266.txt [633B] [150]
Ответов: 4641
Рейтинг: 334
#2: 2011-04-08 10:35:42 ЛС | профиль | цитата
Мартынов писал(а):
Оригинальный спрайт.

так это же картинка с альфа каналом, вроде. Тут nesco с ней дружит. Может подскажет! Если вообще, такое возможно.
------------ Дoбавленo в 10.35:
тем более ты преобразовываешь png в bmp, который заведомо будет без альфа канала
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#3: 2011-04-08 10:59:09 ЛС | профиль | цитата
Ravilr писал(а):
тем более ты преобразовываешь png в bmp, который заведомо будет без альфа канала

Смотря какой bmp. К тому же, где прицеп Альфа какнала В буфер зансится 24 битный битмап без Альфа канала. Только 32 битные битмапы поддерживают Альфа канал
карма: 22

1
Голосовали:Мартынов
Ответов: 4641
Рейтинг: 334
#4: 2011-04-08 11:12:35 ЛС | профиль | цитата
nesco писал(а):
Смотря какой bmp

это если компонентом png преобразовать png c альфа каналом то получится bmp с альфа каналом или ты имел ввиду вообще о bmp ?
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#5: 2011-04-08 11:22:45 ЛС | профиль | цитата
Ravilr писал(а):
это если компонентом png преобразовать png c альфа каналом то получится bmp с альфа каналом или ты имел ввиду вообще о bmp ?

nesco писал(а):
Только 32 битные битмапы поддерживают Альфа канал

------------ Дoбавленo в 11.22:
Мартынов, вот так проверь



Add(Clipboard,14721384,574,301)
{
}
Add(PNG,11549027,511,301)
{
Point(FileName)
Point(doAlphaBitmap)
Point(onAlphaBitmap)
link(onAlphaBitmap,14721384:doPutBitmap,[])
}
Add(Hub,8037046,434,301)
{
OutCount=3
link(onEvent1,11549027:doLoad,[])
link(onEvent2,11549027:doAlphaBitmap,[(480,314)(480,321)])
}


К тому же, на приемной стороне, тоже надо предусмотреть отображение Альфа картинки
карма: 22

0
Ответов: 157
Рейтинг: 1
#6: 2011-04-08 11:53:12 ЛС | профиль | цитата
nesco писал(а):
вот так проверь


Проверил копирую изображение в буфер таким методом и вставляю его в Фотошоп(не работает) в graphic gale(http://www.humanbalance.net/gale/us/) не работает. Вставляется просто картинка залитая темным цветом тестировал вот на этой картинке:



Но если взять пример конвертора из формата PNG в формат BMP который находится в примерах и конвертировать png в bmp а потом перетащить файл в выше названные программы то альфаканал определяется правильно и артефактов не наблюдается.
Почитав форум понял что с альфа-каналом нужно плясать с бубнами поэтому можно поставить вопрос подругому. Как скопировать изображение без артефактов в буфер обмена Windows плевать на альфа канал его потом сделаю вручьную поже. Схема приведенная выше работает только 50 на 50 , непонятно почему взлетают вот такие артефакты:


карма: 0

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#7: 2011-04-08 12:07:18 ЛС | профиль | цитата
Мартынов писал(а):
Схема приведенная выше работает только 50 на 50

Очень похоже на то что не все png 32 битные
Мартынов писал(а):
Но если взять пример конвертора из формата PNG в формат BMP который находится в примерах

Там используется ImageLoader, который использует системные ресурсы. Почему бы не сделать загрузку на нем, только его необходимо заменить на новый компонент Img_Loader, иначе, возможны проблемы при установленном IE9, тк этот тип компонентов использует ресурсы IE9
И вообще, я бы не рекомендовал использовать компонент png для передачи данных между сторонними приложениями, особенно, через буфер обмена, тк компонент png адаптирован чисто под HiAsm
------------ Дoбавленo в 12.04:
Мартынов писал(а):
Вставляется просто картинка залитая темным цветом тестировал вот на этой картинке:

А вот это так и будет, тк копиуется в буфер не png, а 32 битный битмап. Его особенность черный фон, это и есть Альфа канал.
------------ Дoбавленo в 12.07:
Вот пример такого битмапа -- panel_001.zip
Попробуй загрузить его в стороннее приложение
карма: 22

0
файлы: 1panel_001.zip [11.1KB] [130]
Ответов: 157
Рейтинг: 1
#8: 2011-04-08 12:42:26 ЛС | профиль | цитата
nesco писал(а):
Почему бы не сделать загрузку на нем

Перед тем как создать тему пытался делать вывод в буфер обмена ImageLoader-ом но ничего в буфер не копировалось

code_23270.txt

Качать новый Img_Loader не стал 9-го ослика у меня точно стоять не будет.

nesco писал(а):
Вот пример такого битмапа

Да все нормально загрузилось.
И еще вопрос а как в png файле можно сделать альфаканал средствами хайасма ?
карма: 0

0
файлы: 1code_23270.txt [393B] [96]
Разработчик
Ответов: 26170
Рейтинг: 2127
#9: 2011-04-08 13:00:47 ЛС | профиль | цитата
Мартынов писал(а):
Качать новый Img_Loader не стал 9-го ослика у меня точно стоять не будет.

Зря, он гораздо проще.
Мартынов писал(а):
И еще вопрос а как в png файле можно сделать альфаканал средствами хайасма ?

Ты имеешь в виду преобразование в 32 бита
------------ Дoбавленo в 12.54:
Мартынов писал(а):
Перед тем как создать тему пытался делать вывод в буфер обмена ImageLoader-ом но ничего в буфер не копировалось

А вот этот твой пример я прверить не смогу, у меня IE9, и ImageLoader у меня не работает
------------ Дoбавленo в 13.00:
Вот схема на новом Img_Loader-e, у меня все копирует в буфер нормально



Add(MainForm,2953706,168,119)
{
}
Add(Clipboard,14721384,266,154)
{
}
Add(Img_Loader,10453577,217,161)
{
link(onLoad,14721384:doPutBitmap,[])
}
Add(Button,8326565,119,161)
{
Left=30
Top=40
TabOrder=-1
link(onClick,4044740:doExecute,[])
}
Add(ODialog,4044740,168,161)
{
link(onExecute,10453577:doLoad,[])
}

карма: 22

0
Ответов: 157
Рейтинг: 1
#10: 2011-04-08 14:27:49 ЛС | профиль | цитата
nesco писал(а):
Ты имеешь в виду преобразование в 32 бита


Ну да , например картинка находится на белом фоне и белый фон должен стать прозрачным.

nesco писал(а):
Вот схема на новом Img_Loader-e, у меня все копирует в буфер нормально


Все впорядке разобрался !!! вроде загружает альфаканал.

карма: 0

0
10
Сообщение
...
Прикрепленные файлы
(файлы не залиты)