工具:vs2005(C#)
目的:绘制2D小游戏地图,2D人物。人物行走时,移动背景地图表示行走。
本人C#懂的不多,希望指教。
开始,我将背景和人物分别用label实现(lBackground,lCharacter)。开始的时候装载Bitmap bmp(背景地图,jpg格式)到lBackgroud.image(人物图表,gif),Bitmap bmpCharacter到lCharacter.image。之后简单的实现了地图的移动什么的,刷新也比较理想,轻微闪烁可以接受。用gif的原因就是gif有透明度属性,在没有内容的地方设置了透明。
问题是,this.lCharacter.BackColor = System.Drawing.Color.Transparent;这个属性只能透射出其所在容器的背景,这样,在lCharacter处除了gif应该显示的内容之外就都是背景(form的Backgroud,我这里lCharacter在form内),这样显然不行,有没有什么方法可以让lCharacter透视的是其上一层控件的画面?且在lBackground移动刷新的时候不会闪来闪去?这个问题困扰了很久只能透视背景是不是有点太蠢了?我想了一些方法解决,不过都没有成功:
1,将lBackground换成Panel pBackgroud,pBackground.Controls.Add(lCharacter),每次移动的时候,移动pBackgroud相对form的位置,并移动lCharacter相对pBackgroud的位置。这样闪烁非常严重,人物连续移动的时候根本没法看。
2,在form的表面直接绘制地图,用this.CreateGraphics().DrawImage(bmp, x, y);x,y分别为制定的绘制位置,人物同样用label,但是label的透明部分还是显示form设定的背景图片或者颜色,不会显示我绘制在form表面的东西。到底怎么能实现我要的效果呢?希望大家能够给出切实可行的解决方法,因为例子本来就简单,请试验后再指教,尽量避免那些太理论(几乎就是凭空想象,试验效果其差)的提示吧,多谢了。
目的:绘制2D小游戏地图,2D人物。人物行走时,移动背景地图表示行走。
本人C#懂的不多,希望指教。
开始,我将背景和人物分别用label实现(lBackground,lCharacter)。开始的时候装载Bitmap bmp(背景地图,jpg格式)到lBackgroud.image(人物图表,gif),Bitmap bmpCharacter到lCharacter.image。之后简单的实现了地图的移动什么的,刷新也比较理想,轻微闪烁可以接受。用gif的原因就是gif有透明度属性,在没有内容的地方设置了透明。
问题是,this.lCharacter.BackColor = System.Drawing.Color.Transparent;这个属性只能透射出其所在容器的背景,这样,在lCharacter处除了gif应该显示的内容之外就都是背景(form的Backgroud,我这里lCharacter在form内),这样显然不行,有没有什么方法可以让lCharacter透视的是其上一层控件的画面?且在lBackground移动刷新的时候不会闪来闪去?这个问题困扰了很久只能透视背景是不是有点太蠢了?我想了一些方法解决,不过都没有成功:
1,将lBackground换成Panel pBackgroud,pBackground.Controls.Add(lCharacter),每次移动的时候,移动pBackgroud相对form的位置,并移动lCharacter相对pBackgroud的位置。这样闪烁非常严重,人物连续移动的时候根本没法看。
2,在form的表面直接绘制地图,用this.CreateGraphics().DrawImage(bmp, x, y);x,y分别为制定的绘制位置,人物同样用label,但是label的透明部分还是显示form设定的背景图片或者颜色,不会显示我绘制在form表面的东西。到底怎么能实现我要的效果呢?希望大家能够给出切实可行的解决方法,因为例子本来就简单,请试验后再指教,尽量避免那些太理论(几乎就是凭空想象,试验效果其差)的提示吧,多谢了。
解决方案 »
- C#和flash交互如何刷新AxShockwaveFlash中的内容
- 问一个简单的问题,关于字段和属性的
- 比较复杂的正则表达式,大侠进来帮下忙啊
- 插件Dll类库中的窗体显示问题
- DataSet ds = new DataSet()与DataSet ds =Null有什么区别?
- 关于绑定的问题,求解.datasource和fill有什么不同?
- 有关获取客户端的计算机名?请帮忙!
- 多线程数据比对
- 求教,怎么调用记事本?
- 当一个网站有多个二级域名需要绑定不同的文件夹,怎样管理Bin文件,一定要每个文件夹里都有一个吗?
- 能否给datagridview的列头设置背景图片?
- C#文本框中只能输入数字和一个小数点
也就是说,直接绘制的方法也可以,但是如何让人物动起来?而且不闪,有透视.