Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
CDC dcMemBgr,dcMemSrc,dcMemMask,dcMemSrcCopy;
//Spüeicher erstellen
dcMemBgr.CreateCompatibleDC(pDc);
dcMemSrc.CreateCompatibleDC(pDc);
dcMemMask.CreateCompatibleDC(pDc);
dcMemSrcCopy.CreateCompatibleDC(pDc);
CBitmap* oldbgrbmp=NULL;
CBitmap bgrbmp;
CBitmap* oldsrcbmp=NULL;
CBitmap srcbmp;
CBitmap* oldmaskbmp=NULL;
CBitmap maskbmp;
CBitmap *pCBmp = aktMap->GetCBitmap();
CBitmap *oldsrccopybmp = NULL;
if(pCBmp)
{
//Bilddaten ermitteln
BITMAP *bi = aktMap->GetBitmapInfo();
//Bitmaps anlegen und laden
oldsrccopybmp = dcMemSrcCopy.SelectObject(pCBmp);
srcbmp.CreateBitmap(bi->bmWidth, bi->bmHeight, bi->bmPlanes, bi->bmBitsPixel, NULL );
oldsrcbmp = dcMemSrc.SelectObject(&srcbmp);
dcMemSrc.BitBlt(0,0,bi->bmWidth, bi->bmHeight,&dcMemSrcCopy,0,0, SRCCOPY);
dcMemSrcCopy.SelectObject(oldsrccopybmp);
dcMemSrcCopy.DeleteDC();
bgrbmp.CreateBitmap(bi->bmWidth, bi->bmHeight, bi->bmPlanes, bi->bmBitsPixel, NULL );
oldbgrbmp = dcMemBgr.SelectObject(&bgrbmp);
//Hintergrund lesen
dcMemBgr.StretchBlt(0,0,bi->bmWidth, bi->bmHeight,pDc,Zoom.left,Zoom.top,Zoom.Width(),Zoom.Height(),SRCCOPY);
// zuerst monochromes (s/w) CBitmap-Objekt in der gleichen
// Groesse wie eingelesen Bitmap erstellen
maskbmp.CreateBitmap( bi->bmWidth, bi->bmHeight, 1, 1, NULL );
// und Masken-Bitmap auswaehlen
oldmaskbmp = dcMemMask.SelectObject(&maskbmp);//jetzt ist in dc2mask eine einheitliche Fläche in der Grösse des Bitmaps Schwarz uninitialisiert
// geladene Bitmap in monochrome Bitmap umkopieren
// -> alles ausser Alphafarbe erscheint nun in schwarzer Farbe
dcMemMask.BitBlt(0,0,bi->bmWidth, bi->bmHeight,&dcMemSrc,0,0, SRCCOPY );//alles was in dc2 nicht Hintergrund von dc2 entspricht, wird nach dc2mask kopiert, HG von dc2mask ist weiß
//Maske mit Bgr verknüpfen um Schwarz zumachen, was nachher von Objekt überlagert wird
dcMemBgr.BitBlt(0,0,bi->bmWidth, bi->bmHeight,&dcMemMask,0,0, SRCAND);
// Negativ von S/W Bitmap, HG ist nun schwarz (RGB:0,0,0)
dcMemMask.BitBlt(0,0,bi->bmWidth, bi->bmHeight,NULL,0,0, DSTINVERT );//maske einfach invertieren daher NULL
// geladene Bitmap mit negativ von S/W-Bitmap verunden
// --> HG der geladenen Bitmap ist nun schwarz
dcMemSrc.BitBlt(0,0,bi->bmWidth, bi->bmHeight,&dcMemMask,0,0, SRCAND );//Alphafarbe ist durch schwarz ersetzt worden bei maske ist alles außer Alphafarbe weiss
//Src und Bgr verodern
dcMemBgr.BitBlt(0,0,bi->bmWidth, bi->bmHeight,&dcMemSrc,0,0, SRCPAINT );
pDc->StretchBlt(Zoom.left,Zoom.top,Zoom.Width(),Zoom.Height(),&dcMemBgr,Cut.left,Cut.top,Cut.Width(),Cut.Height(),SRCCOPY);//alles was bisher auf dc gezeichnet wurde und die maske -> alles tiefer liegende + "Schatten" von dem was noch kommt
//aufräumen
dcMemMask.SelectObject(oldmaskbmp);
maskbmp.DeleteObject();
dcMemBgr.SelectObject(oldbgrbmp);
dcMemSrc.SelectObject(oldsrcbmp);
bgrbmp.DeleteObject();
}
dcMemMask.DeleteDC();
dcMemSrc.DeleteDC();
dcMemBgr.DeleteDC();