Показать сообщение отдельно
Старый 04.04.2015, 23:59   #1
barsunduk
ПроЭктировщик
 
Аватар для barsunduk
 
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений
(для 271 пользователей)
Как рисовать на картинке (ImageOutput)?

подзатупил я малость((
удаляю вопрос. ответ простой - накладывать маску, чтобы задать нужную форму картинке, нужно примерно так:
UsePNGImageDecoder()
UsePNGImageEncoder()
UseJPEGImageDecoder()

Procedure RoundCorners(Image)
  If 
IsImage(Image)
    Protected 
w = ImageWidth(Image)
    Protected 
h = ImageHeight(Image)
    Protected 
imgMask = CatchImage(#PB_Any, ?maskData, ?maskEnd - ?maskData)
    
If StartDrawing(ImageOutput(imgMask))
      
DrawingMode(#PB_2DDrawing_AlphaClip)
      
RoundBox(0, 0, w, h, w / 5, h / 5, RGBA(0, 0, 0, 255))
      
DrawingMode(#PB_2DDrawing_AlphaClip)
      
DrawImage(ImageID(Image), 0, 0)
      
StopDrawing()
      
ProcedureReturn imgMask
    
EndIf
  EndIf
EndProcedure

Global fn.s = OpenFileRequester("LoadImage", "", "Png and Jpg images|*.png;*.jpg|Png images|*.png|Jpg images|*.jpg", 0)
imgPhoto = LoadImage(#PB_Any, fn)
imgR = RoundCorners(imgPhoto)
fn = SaveFileRequester("SaveImage", fn, "All files|*.*", 0)
If 
fn
  SaveImage
(imgR, fn, #PB_ImagePlugin_PNG)
  
FreeImage(imgPhoto)
  
FreeImage(imgR)
EndIf

DataSection
  maskData
:
  
IncludeBinary "mask.png"
  
maskEnd:
EndDataSection 
на всякий случай: картинки для тестов использовал эти:



жаль, не выходит нарисовать маску с помощью RoundBox. не рисуется, гадина(((
__________________
to be or not to be - it's not a question!
2b or not 2b = ff

Последний раз редактировалось barsunduk, 05.04.2015 в 21:11. Причина: ответ найден
(Offline)
 
Ответить с цитированием