• c# winform 应用编程代码总结 6


    22、空心字体效果演示

            [System.Runtime.InteropServices.DllImport("gdi32")]
            private static extern IntPtr CreateFont(int H,int W,int E,int O,int FW,int I,int u,int S,int C,int OP,int CP,int Q,int PAF,string F);
            [System.Runtime.InteropServices.DllImport("gdi32")]
            private static extern IntPtr BeginPath(IntPtr hdc);
            [System.Runtime.InteropServices.DllImport("gdi32")]
            private static extern IntPtr EndPath(IntPtr hdc);
            [System.Runtime.InteropServices.DllImport("gdi32")]
            private static extern int SetBkMode(IntPtr hdc,int nBkMode);
            [System.Runtime.InteropServices.DllImport("gdi32")]
            private static extern IntPtr StrokePath(IntPtr hdc);
            [System.Runtime.InteropServices.DllImport("gdi32")]
            private static extern int TextOut(IntPtr hdc,int x,int y,string lpString,int nCount);
            [System.Runtime.InteropServices.DllImport("gdi32")]
            private static extern IntPtr SelectObject(IntPtr hdc,IntPtr hObject);
            [System.Runtime.InteropServices.DllImport("user32")]
            private static extern IntPtr GetDC(IntPtr hwnd);
            const int FW_HEAVY = 900;
            const int ANSI_CHARSET = 0;
            const int OUT_DEFAULT_PRECIS = 0;
            const int CLIP_DEFAULT_PRECIS = 0;
            const int DEFAULT_QUALITY = 0;
            const int DEFAULT_PITCH = 0;
            const int FF_SWISS = 32;
            const int TRANSPARENT = 1;

            private void button1_Click(object sender, System.EventArgs e)
            {
                IntPtr dc=GetDC(this.Handle);
                IntPtr m_Font=CreateFont(50, 20, 0, 0, FW_HEAVY, 1, 0,
                    0, ANSI_CHARSET, OUT_DEFAULT_PRECIS,
                    CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
                    DEFAULT_PITCH | FF_SWISS, "Times New Roman");
                //创建字体
                //这里的字体一定要是TrueType Font

                BeginPath(dc);
                //开始捕获轮廓
                SetBkMode(dc, TRANSPARENT );
                IntPtr m_OldFont=SelectObject(dc,m_Font);
                TextOut(dc,10,0,this.textBox1.Text,this.textBox1.Text.Length);
                SelectObject(dc,m_OldFont);
                EndPath(dc);
                //结束捕获
                StrokePath(dc);
                //将捕获的轮廓用当前的Pen画到Canvas上       
            }

    image

    23、反转图片的颜色

            [System.Runtime.InteropServices.DllImport("gdi32")]
            private static extern int StretchBlt(IntPtr hDestDC,int x,int y,int nWidth,
                int nHeight,IntPtr hSrcDC,int xSrc,int ySrc,int WidthSrc,int HeightSrc,int dwRop);
            const int NOTSRCCOPY = 0x330008;
            //声明所需函数和常量
        
            [System.Runtime.InteropServices.DllImport("user32")]
            private static extern IntPtr GetDC(IntPtr hwnd);

            IntPtr hDC1,hDC2;
            Graphics g1,g2;
            private void button1_Click(object sender, System.EventArgs e)
            {
                if(this.openFileDialog1.ShowDialog()==DialogResult.OK)
                {
                    Bitmap bmp;
                    bmp=new Bitmap(this.openFileDialog1.FileName);
                    this.pictureBox1.Image=bmp;
                    this.pictureBox1.Refresh();
            
                    hDC1=g1.GetHdc();
                    hDC2=g2.GetHdc();
                    StretchBlt(hDC2,0,0,this.pictureBox2.Width,this.pictureBox2.Height,
                        hDC1,0,0,this.pictureBox1.Width,this.pictureBox1.Height,NOTSRCCOPY);
                    g1.ReleaseHdc(hDC1);
                    g2.ReleaseHdc(hDC2);
                }
            }

            private void Form1_Load(object sender, System.EventArgs e)
            {
                this.pictureBox1.SizeMode=PictureBoxSizeMode.StretchImage;
                this.pictureBox2.SizeMode=PictureBoxSizeMode.StretchImage;
                g1=this.pictureBox1.CreateGraphics();
                g2=this.pictureBox2.CreateGraphics();
            }

    image

    24、创建缩略图

            private void button1_Click(object sender, System.EventArgs e)
            {
                if(this.openFileDialog1.ShowDialog()==DialogResult.OK)
                {
                    Image image = new Bitmap(this.openFileDialog1.FileName);
                    Image pThumbnail = image.GetThumbnailImage(100, 100, null, new 
                        IntPtr());
                    this.CreateGraphics().DrawImage(
                        pThumbnail,
                        10,
                        10, 
                        pThumbnail.Width,
                        pThumbnail.Height);            
                }
            }

    image

    本系列文章是作者学习《Visual C#.NET 应用编程150例》(源码)心得笔记,欢迎转载,请注明原文地址,如有疑问,可以通过 278250658@qq.com 联系作者本人。

  • 相关阅读:
    cocos2d-x3.0 PageView
    mysql 安装配置及经常使用操作
    Android自己定义组件系列【6】——进阶实践(3)
    hdu 4300 Clairewd’s message(具体解释,扩展KMP)
    VS"后生成事件" 菜单的使用
    CUDA 实现JPEG图像解码为RGB数据
    Hibernate操作Blob数据
    android清除缓存为什么总是存在12k?
    JSP入门
    Linux字符设备驱动结构(一)--cdev结构体、设备号相关知识机械【转】
  • 原文地址:https://www.cnblogs.com/syxchina/p/2197280.html
Copyright © 2020-2023  润新知