Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > PureBasic

PureBasic Мощный кросс-платформенный язык среднего уровня на основе BASIC. Подходит для решения широкого круга задач.

Ответ
 
Опции темы
Старый 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 
ImageWidth(Image)
    Protected 
ImageHeight(Image)
    Protected 
imgMask CatchImage(#PB_Any, ?maskData, ?maskEnd - ?maskData)
    
If StartDrawing(ImageOutput(imgMask))
      
DrawingMode(#PB_2DDrawing_AlphaClip)
      
RoundBox(00wh55RGBA(000255))
      
DrawingMode(#PB_2DDrawing_AlphaClip)
      
DrawImage(ImageID(Image), 00)
      
StopDrawing()
      
ProcedureReturn imgMask
    
EndIf
  EndIf
EndProcedure

Global fn.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
(imgRfn#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)
 
Ответить с цитированием
Старый 05.04.2015, 00:16   #2
barsunduk
ПроЭктировщик
 
Аватар для barsunduk
 
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений
(для 271 пользователей)
Ответ: Как рисовать на картинке (ImageOutput)?

winAPI делает это моментально, регионами, но я хз, как это на васик переложить. кто умеет, признавайтесь!
GetWindowRect(hWnd, &wnd);
        
hdc BeginPaint(hWnd, &ps);
        
hdcMem CreateCompatibleDC(hdc);
        for (
int i 0n; ++i)
        {
            
HRGN rgn CreateRoundRectRgn(info[i].pos.xinfo[i].pos.yinfo[i].pos.CARD_WIDTHinfo[i].pos.CARD_HEIGHT77);
            
SelectClipRgn(hdcrgn);
            
oldBitmap SelectObject(hdcMemcards[info[i].card]);
            
GetObject(cards[info[i].card], sizeof(bitmap), &bitmap);
            
BitBlt(hdcinfo[i].pos.xinfo[i].pos.ybitmap.bmWidthbitmap.bmHeighthdcMem00SRCCOPY);
            
SelectObject(hdcMemoldBitmap);
        }
//Don't forget to delete your region (SelectClipRgn makes a copy of it) 
этот вопрос тоже отпадает за ненадобностью.
и вообще просьба к модераторам удалить эту тему. вряд ли ещё найдётся человек, который не разберётся, как накладывать маски.
__________________
to be or not to be - it's not a question!
2b or not 2b = ff

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


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 09:05.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com