自定义绘制图片的一个小技巧

要在picturebox中自由绘制图片,一开始将绘制函数写入在Paint中

public void ff_Paint(object sender, PaintEventArgs e)
 {
  CreatShow(Graphics.FromHwnd(fpic.Handle));  //这样卡爆了.
 }

void fpic_Paint(object sender, PaintEventArgs e)
{
CreatShow(e.Graphics); //这样卡爆了.
}

结果加载了几张图片后,程序就卡爆了,而且经常不显示,说明不管是针对picturebox控件本身,还是它的父载体panel, 显示销量都极差.

后来思考了很久 换了一种方式,

//先创建一个位图
            Bitmap bp = new Bitmap(fpic.Width, fpic.Height); // 用于缓冲输出的位图对象
            Graphics g = Graphics.FromImage(bp);

//再将内容绘制在位图之上
            for (int i = 0; i < Picspathary.Count; i++)
            {
                Drawone(g, Picspathary[i], i);
            }

//最后
            fpic.Image = bp;

这样之后, 一点都不卡了.

//网上看到的 说加了这句话效果好

        public Form1()
        {
            InitializeComponent();

            this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.AllPaintingInWmPaint, true); 

        }

  

时间: 2024-08-10 18:39:23

自定义绘制图片的一个小技巧的相关文章

记录一个小技巧,在一个包下的多个main函数调试

在eclipse中,有好几个class想做测试,又不想工程太多,都写在了一个包里面,也方便import 但是每次运行的时候,eclipse都默认运行第一次建立的那个main函数. 要想运行其他的,需要做一下修改. 在工具栏中, 点击run旁边的下拉箭头,会出现一个下拉菜单. 点击Run Configurations 进入到配置界面 在标注红色的区域,上面那个是选取工程,下面那个是选取该工程的主函数 在这里点search,找到你刚写的新的主函数,如果里面还看不到,可以手动输入就好了 然后点击app

[每日一个小技巧] CentOS 下使用yum安装一类软件包

yum 提供了丰富的工具用于支持软件包的安装. 有时候需要安装不只只是一个的情况下,可以使用groupinstall选项. 首先可以通过grouplist查询对应的group信息,比如需要安装开发工具的情况下, 可以使用以下命令: $ yum groupinstall  "Development Tools" [每日一个小技巧] CentOS 下使用yum安装一类软件包,布布扣,bubuko.com

快速掌握iOS API的一个小技巧

快速掌握iOS API的一个小技巧 周银辉 iOS SDK和Developer Library中提供了各个类以及函数的帮助文档,这很棒,但要想了解整个库的大体结构(比如UIKit下有哪些类,他们的继承关系如何)这有些让人摸不着头脑,下面有个小技巧: 打开iOS Developer Library, 点击你想要了解的Framework,以UIKit为例,好多东西都是平级地放在一起的,根本看不下去了 然后在搜索框输入: Framework Reference,绝大多数情况下都会出现一个 xxx Fr

开大Stack的一个小技巧

在程序头部添加一行 #pragma comment(linker, "/STACK:16777216") 可有效开大堆栈 实验效果如下: 11330179 2014-08-05 18:28:17 Wrong Answer 4920 1687MS 7776K 1327 B C++ Jeremy_wu 11272238 2014-07-31 19:50:26 Wrong Answer 4891 62MS 2368K 1402 B G++ Jeremy_wu 下面是没添加这一行的运行结果 上

mac下cp命令的妙用(一个小技巧)

在项目开发中遇到了这样一种情况: 需要用一个干净的工程(export出来的,没有svn信息)去覆盖一个主干的工程(含有svn信息),然后提交代码:我们在mac系统中拷贝->粘贴到目标文件夹,只有2个选项:停止和全部替换:选择全部替换后,svn信息全部丢失了. 这时我们可以使用cp -r dir1 rootdir 来进行覆盖,dir1是那个干净工程的文件夹路径,和主干工程同名:rootdir是主干工程的上级目录,如此一来我们就实现了保留svn信息前提下覆盖文件夹的目的. mac下cp命令的妙用(一

什么是流程图?绘制高颜值流程图小技巧?

不管身处什么岗位,什么职业都会遇到绘制流程图的问题,流程图带来的直观体验不必多说,想必很多朋友都接触过流程图,有时候是在一篇文章里面,有时是在工作报表中,使用流程图的地方是比较多的,那什么是"流程图"?绘制高颜值流程图小技巧有哪些,看完这篇文章你就知道要怎样操作了.1.什么是"流程图"?流程图是一种常见的工作图表,以特定的图形符号加上说明,表示算法的图,称为流程图或框图.流程图主要用来说明某一过程.这种过程既可以是生产线上的工艺流程,也可以是完成一项任务必需的管理过

汇道科技:一个小技巧让JAVA程序员顺利拿到理想Offer

有朋友跟我抱怨,明明平常对知识掌握的很精炼了,一到面试就会紧张,发挥失常,错失工作机会,这种情况就像"考前综合症",平常对知识点都掌握的很好,一到大场合就怯场,其实我们无论是在考试还是面试,都有很多技巧的.今天汇道科技小编分享一些面试技巧给各位程序员,让大家在面试时能更加得心应手,更顺利的拿到理想的offer. Java程序员面试的有哪些小技巧 01 笔试 笔试这个环节是很容易,一般由5至10个选择题+2至5个论述题+1至2个编程题组成. 我们保持平静心态--浏览所有题目--开答.答题

mysql不能启动问题分析的一个小技巧

场景:在迁移mysql5.5.25a数据目录(从/var/lib/mysql迁移至/data)后,无法启动数据库,执行service mysql start,提示pid无法更新,新旧数据目录下的错误日志均无任何信息.此时,没有太多mysql使用经验的同事估计已经傻眼了. 类似问题如何排查呢? 这里有个小技巧: 可以稍微改下/etc/init.d/mysql(先备份),里面的      $bindir/mysqld_safe --datadir="$datadir" --pid-file

iOS 自定义tabbar 关于push问题 小技巧

在开发的时候,相信大家都用过tabbar ,今天我在写项目的时候也用到了tabbar  紧着着一系列问题就来了 需求:我的项目的主要框架是tabbar ,但是用系统的tabbar不美观 于是我就自定义了我的tabbar,创建了一个类,继承自UITabBarController,在这个类中我将系统原生的tabbar隐藏了,就写了这样一句话, self.tabBar.hidden=YES; 然后就是一系列的我们写得不能在熟的代码了,引入viewcontroller的头文件,然后实例化,将viewco