void CameraDelayedLooper::TimerTick(int nID) { if (nID == CAMERA_ID) { DateTime pcTime = DateTime::Now(); BitmapImage* pcBitmapImage; BitmapImage* pcSaveImage; os::String cScreenShotPath; os::Desktop m_Screen; pcSaveImage = new os::BitmapImage( Bitmap::SHARE_FRAMEBUFFER | Bitmap::ACCEPT_VIEWS ); pcSaveImage->SetColorSpace( CS_RGBA32 ); pcSaveImage->ResizeCanvas( os::Point( m_Screen.GetResolution() ) ); pcBitmapImage = new os::BitmapImage((uint8*)m_Screen.GetFrameBuffer(),m_Screen.GetResolution(),m_Screen.GetColorSpace()); pcBitmapImage->Draw( os::Point( 0, 0 ), pcSaveImage->GetView() ); pcSaveImage->Sync(); cScreenShotPath = os::String().Format("%s/Pictures/Screenshot-%d-%d-%d-%d_%d_%d.png",getenv("HOME"),pcTime.GetYear(),pcTime.GetMonth(),pcTime.GetDay(),pcTime.GetHour(),pcTime.GetMin(),pcTime.GetSec()); File vNewFile = os::File(cScreenShotPath,O_CREAT | O_TRUNC | O_WRONLY); vNewFile.WriteAttr("os::MimeType", O_TRUNC, ATTR_TYPE_STRING,"image/png", 0,10 ); pcSaveImage->Save(&vNewFile,"image/png"); vNewFile.Flush(); delete( pcSaveImage ); delete pcBitmapImage; RemoveTimer(this,nID); } }