Два поста тому назад мы вывели несколько изображений на рабочий стол с помощью Conky и Lua. Из предыдущего скриншота было видно - картинки в местах наложения друг на друга сливаются. Чтобы как-то разделить их можно добавить рамку вокруг фотографии и тень.
Для этого добавим еще две функции в Lua-скрипт. Одна уже всем известная:
function fRGBtoARGB (nColor, nAlpha)
-- nColor - цвет RGB (0x000000)
-- nAlpha - степень прозрачности, от 0 до 1
return ((nColor / 0x10000) % 0x100) / 255.,
((nColor / 0x100) % 0x100) / 255.,
(nColor % 0x100) / 255., nAlpha
end
Вторая рисует прямоугольник, который будет и тенью, и рамкой:
function fFrame(nX, nY, nWidth, nHeight, nWidthLine, nColor, nAlpha)
-- nX, nY - координаты, nWidth, nHeight - ширина и высота
-- nWidthLine - толщина обводки
-- nColor, nAlpha - цвет и степень прозрачности
cairo_set_line_width (cr, nWidthLine)
-- устанавливаем толщину линии
cairo_move_to(cr, nX, nY)
cairo_line_to(cr, nX+nWidth, nY)
cairo_line_to(cr, nX+nWidth, nY+nHeight)
cairo_line_to(cr, nX, nY+nHeight)
cairo_close_path (cr)
-- рисуем путь в виде прямоуголтника
cairo_set_source_rgba(cr, fRGBtoARGB(nColor, nAlpha))
-- задаем цвет и прозрачность
cairo_stroke(cr)
-- обводим путь линией, с заданными выше параметрами
end
Прошлая функция тоже немного изменится:
function fShowImage (nX, nY, sName, nRotate)
local Image = cairo_image_surface_create_from_png (sName)
local nWidth = cairo_image_surface_get_width (Image)
local nHeight = cairo_image_surface_get_height (Image)
local nScale = 512.0/nHeight
cairo_rotate (cr, (nRotate)*math.pi/180)
fFrame(nX+0.5, nY+0.5, nWidth*nScale, nHeight*nScale, 10, 0x000000, 0.25)
-- отображаем тень
cairo_scale (cr, nScale, nScale)
cairo_set_source_surface (cr, Image, nX/nScale, nY/nScale)
cairo_paint (cr)
cairo_surface_destroy (Image)
cairo_scale (cr, 1/nScale, 1/nScale)
fFrame(nX, nY, nWidth*nScale, nHeight*nScale, 8, 0xffffff, 1)
-- рисуем рамку
cairo_rotate (cr, (-nRotate)*math.pi/180)
end
А способ выбора и вывода изображений пока еще не придуман. Больше склоняюсь к варианту, где позиции картинок будут предопределены, так как сгенерированное расположение не всегда будет подходяще. Лучше подобрать несколько наборов уместных координат, и уже по ним переключать фотографии.
Послесловие
Не знаете чем разнообразить досуг? Попробуйте поискать в сети флеш игры драки или другие жанры - вы весело и увлекательно проведете время.
Смотри также

А значки в таком случае под фотографиями будут?
ОтветитьУдалитьАнонимный, значки будут видны за фотографиями, но вот взаимодействовать с ними вряд ли получится
ОтветитьУдалить