Я хочу рисовать на местном TBitmap
и верни это. Поскольку я вне основного потока, я должен заблокировать холст перед его использованием. (Насколько потокобезопасен TBitmap)
Должен ли я когда-нибудь разблокировать холст или TBitmap
деструктор сделать это для меня? Безопасно ли разблокировать холст в этой функции после рисования на растровом изображении и снова заблокировать его, когда я хочу прочитать растровое изображение, или может ли холст очиститься, если я это сделаю?
std::shared_ptr<TBitmap> f() {
std::shared_ptr<TBitmap> bmp(new TBitmap);
bmp->Canvas->Lock();
// draw on bitmap
return bmp;
}
Как прокомментировал Реми:
Деструктор растрового изображения НЕ откроет холст для вас. Если вы явно заблокировали его, вы должны явно разблокировать его. И да, как только вы разблокируете холст, основной поток пользовательского интерфейса может свободно очищать растровые ресурсы.
Других решений пока нет …