bool IGFrameManager::Cut(LPCWSTR pcwGuid) { IGSmartPtr <IGFrame> spFrame; if (!GetFrame(pcwGuid, spFrame)) return false; CxImage *pCxLayer = spFrame->GetWorkingLayer(); if (!pCxLayer) return false; RECT rcSel; if (pCxLayer->SelectionIsValid()) pCxLayer->SelectionGetBox (rcSel); else{ rcSel.bottom = 0; rcSel.left = 0; rcSel.top = pCxLayer->GetHeight(); rcSel.right = pCxLayer->GetWidth(); } m_spClipboardLayer = new IGLayer(NULL); m_spClipboardLayer->Create (rcSel.right - rcSel.left, rcSel.top - rcSel.bottom, 24); m_spClipboardLayer->AlphaCreate(); pCxLayer->AlphaCreate(); RGBQUAD qGray; qGray.rgbBlue = CXIMAGE_GRAY; qGray.rgbGreen = CXIMAGE_GRAY; qGray.rgbRed = CXIMAGE_GRAY; for(long y=rcSel.bottom; y<rcSel.top; y++){ for(long x=rcSel.left; x<rcSel.right; x++){ if (pCxLayer->BlindSelectionIsInside(x,y)){ m_spClipboardLayer->BlindSetPixelColor(x - rcSel.left, y - rcSel.bottom, pCxLayer->BlindGetPixelColor(x,y)); pCxLayer->BlindSetPixelColor(x, y, qGray); pCxLayer->AlphaSet(x, y, 0); } else m_spClipboardLayer->AlphaSet (x - rcSel.left, y - rcSel.bottom, 0); } } return true; }