重写PaintBackground,设置背景图

解决方案 »

  1.   

    我在paint里修改的背景图,不过vs会死变的特别慢,或者干脆就不显示,直接在本应该显示控件的地方是一块空白。你做过这块木有,诚心求教
      

  2.   

    要不是你的图片太大,要不是你的代码有问题啊。
    一般图片,使用背景设置,或者onparint里画图,都没问题啊。
      

  3.   

    自定义ComboBox控件下拉框嵌入图片示例
     private void beautyComboBox_DrawItem(object sender,DrawItemEventArgs e)
            {
                Graphics gComboBox = e.Graphics;//声明一个GDI+绘图图面类的对象
                Rectangle rComboBox = e.Bounds;//声明一个表示矩形的位置和大小类的对象
                Size imageSize = imageList1.ImageSize;//声明一个有序整数对的对象
                FontDialog typeFace = new FontDialog();//定义一个字体类对象
                Font Style = typeFace.Font;//定义一个定义特定的文本格式类对象
                if(e.Index >= 0)//当绘制的索引项存在时
                {
                    string temp = (string)beautyComboBox.Items[e.Index];//获取ComboBox控件索引项下的文本内容
                    StringFormat stringFormat = new StringFormat();//定义一个封装文本布局信息类的对象
                    stringFormat.Alignment = StringAlignment.Near;//设定文本的布局方式
                    if(e.State == (DrawItemState.NoAccelerator | DrawItemState.NoFocusRect))//当绘制项没有键盘加速键和焦点可视化提示时
                    {
                        e.Graphics.FillRectangle(new SolidBrush(Color.Red),rComboBox);//用指定的颜色填充自定义矩形的内部
                        imageList1.Draw(e.Graphics,rComboBox.Left,rComboBox.Top,e.Index);//在指定位置绘制指定索引的图片
                        e.Graphics.DrawString(temp,Style,new SolidBrush(Color.Black),rComboBox.Left + imageSize.Width,rComboBox.Top);//在指定的位置并且用指定的Font对象绘制指定的文本字符串
                        e.DrawFocusRectangle();//在指定的边界范围内绘制聚焦框
                    }//codego.net/tags/15/1/
                    else //当绘制项有键盘加速键或者焦点可视化提示时
                    {
                        e.Graphics.FillRectangle(new SolidBrush(Color.LightBlue),rComboBox);//用指定的颜色填充自定义矩形的内部
                        imageList1.Draw(e.Graphics,rComboBox.Left,rComboBox.Top,e.Index);//在指定位置绘制指定索引的图片
                        e.Graphics.DrawString(temp,Style,new SolidBrush(Color.Black),rComboBox.Left + imageSize.Width,rComboBox.Top);//在指定的位置并且用指定的Font对象绘制指定的文本字符串
                        e.DrawFocusRectangle();//在指定的边界范围内绘制聚焦框
                    }
                }
            }
      

  4.   

    自定义控件继承自Control??使用BackGround属性 + BackgroundImageLayout = Stretch可以吧。
    自定义控件继承自PictureBox??使用Image属性 + SizeMode =  Stretch可以吧。
    else
    OnPaintBackground里面使用e.Graphics.DrawImage可以吧??图片应该不会大到把内存撑崩了,我怀疑是不是图片的分辨率太大,超出你控件的范围。你试试在绘图的时候对图片先进行最适缩放。还有其他Idea?