GDI-ExtSelectClipRgn将指定区域与当前剪辑区域组合在一起

Posted 天子骄龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GDI-ExtSelectClipRgn将指定区域与当前剪辑区域组合在一起相关的知识,希望对你有一定的参考价值。

 

HRGN hrgn1;
HRGN hrgn;
HRGN hrgn2;
HRGN hrgn3;
HDC hdc;
HBRUSH hbr;
void CGdiPlusDlg::OnBnClickedButton10()

    hdc = ::GetDC(m_hWnd);
    hrgn1 = CreateRectRgn(10, 10, 200, 200);//创建矩形区域
    
    int n = SelectClipRgn(hdc, hrgn1);//选择剪切区域
    hbr = CreateSolidBrush(RGB(0, 0, 255));    //单色的画刷
    FillRgn(hdc, hrgn1, hbr); //用画刷填充区域

    




void CGdiPlusDlg::OnBnClickedButton11()

    HRGN hrgn = CreateRectRgn(100, 100, 400, 400);//创建矩形区域
    int n1 = SelectClipRgn(hdc, hrgn);
    hbr = CreateSolidBrush(RGB(255, 0, 0));    //单色的画刷
    FillRgn(hdc, hrgn, hbr); //用画刷填充区域

    
    



void CGdiPlusDlg::OnBnClickedButton12()

    hrgn2 = CreateRectRgn(50, 50, 300, 300);//创建矩形区域
    hrgn3 = CreateRectRgn(10, 10, 500, 500);//创建矩形区域

    int n1 = ::ExtSelectClipRgn(hdc, hrgn2, RGN_XOR);  //将指定区域与当前剪辑区域组合在一起
/*
参数1:HDC hdc  设备环境句柄
参数2:HRGN hrgn  要选择的区域的句柄。 除非指定了RGN_COPY模式,否则此句柄不得为 NULL
参数3:int  模式。 它必须是以下值之一
        RGN_AND:新的剪切区域=当前剪切区域与hrgn重叠部分
        RGN_COPY:新的剪切区域=hrgn区域
        RGN_DIFF:新的剪切区域=当前剪切区域-hrgn区域
        RGN_OR:新的剪切区域=当前剪切区域与hrgn的并集
        RGN_XOR:新的剪切区域=(当前剪切区与hrgn并集)-(当前剪切区与hrgn重叠部分)


返回值:该返回值表明了新的剪切区域的复杂度,它可是如下几种形式:
        NULLREGION:区域为空;
        SIMPIEREGION:区域是单个矩形
        COMPLEXREGION:区域为多个矩形;
        ERROR:发生错误
注释:矩形的底边和右边并不排除在剪切区域之外
*/


    hbr = CreateSolidBrush(RGB(255, 255, 0));    //单色的画刷
    FillRgn(hdc, hrgn3, hbr); //用画刷填充区域


 

 

 

 

 

 

 

 

使用htm2canvas+jsPDF将指定区域导出成PDF

最近因项目需求,需要打印弹窗表单内容,所以在网上找了找发现了许多优质的帖子,本文章代码基本参考该帖内容,写此文章只为巩固加深印象,文末是原贴链接

const pdfDownload = ()=>{
    let target = document.getElementsByClassName(\'ant-layout\')[0] //打印区域  
    target.style.background = \'#FFF\' //打印内容务必保持背景色为白色
    html2canvas(target, {
        dpi: 172,
        useCORS: true
    }).then((canvas)=>{
        let cW = canvas.width,
            cH = canvas.height,
            pH = cW / 592.28 * 841.89,
            position = 0,
            iW = 595.28,
            iH = 592.28 / cW * cH,
            pData = canvas.toDataURL(\'image/jpeg\', 1.0),
            { jsPDF } = jspdf
            pdf = new jsPDF(\'\', \'pt\', \'a4\')
            
        if(cH < pH){
            pdf.addImage(pData, \'JPEG\', 0, 0, iW, iH)
        }
        else{
            while(cH > 0){
                pdf.addImage(pData, \'JPEG\', 0, position, iW, iH)
                cH -=pH
                position -= 841.89
                if(cH > 0){
                    pdf.addImage()
                }
            }
        }
        
        pdf.save(\'form.pdf\')
    })
    
}

相关链接
https://segmentfault.com/a/11...

以上是关于GDI-ExtSelectClipRgn将指定区域与当前剪辑区域组合在一起的主要内容,如果未能解决你的问题,请参考以下文章

Flex调用Google map时,如何只显示指定区域

在使用add()方法添加组件到容器时,必须指定将其放置在哪个区域中

使用htm2canvas+jsPDF将指定区域导出成PDF

Wpf中,怎样获取Canva中指定区域上都有哪些控件?

请问怎么在delphi中打印某个指定区域的屏幕

EXCEL中如何查找区域内满足条件的值,并依次将其对应的值依次输出至指定区域?