游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3951|回复: 4

使用Manged DirectX 9.0 --- Part II

[复制链接]

21

主题

78

帖子

103

积分

注册会员

Rank: 2

积分
103
发表于 2003-8-14 01:28:00 | 显示全部楼层 |阅读模式
新建一个项目, 引用上一节的项目, 调用DXEngine 来做一个DirectX应用程序.


  1. using System;
  2. using System.Drawing;
  3. using System.Collections;
  4. using System.ComponentModel;
  5. using System.Windows.Forms;
  6. using System.Data;
  7. using DXEngine;

  8. namespace DirectxApp
  9. {
  10.         /// <summary>
  11.         /// Form1 的摘要说明。
  12.         /// </summary>
  13.         public class Form1 : System.Windows.Forms.Form
  14.         {
  15.                 /// <summary>
  16.                 /// 必需的设计器变量。
  17.                 /// </summary>
  18.                 private System.ComponentModel.Container components = null;
  19.                 string titlescreen="title.bmp";
  20.                 Picture title,charactor;

  21.                 public Form1()
  22.                 {
  23.                         try
  24.                         {
  25.                                 InitializeComponent();
  26.                                 Graphics2D g=new Graphics2D(this,800,600);
  27.                                 title=g.CreateBitmapFromBMP(titlescreen);
  28.                                 charactor=g.CreateBitmapFromBMP("characterblack.bmp",Color.Black);
  29.                                 //charactor=g.CreateBitmapFromBMP("characterred.bmp",Color.Red);
  30.                                
  31.                                 g.OnDraw+=new DrawFunc(this.drawpic);
  32.                                 while(this.Created)
  33.                                 {
  34.                                         g.Draw();
  35.                                         Application.DoEvents();
  36.                                 }
  37.                         }
  38.                         catch(Exception err)
  39.                         {
  40.                                 MessageBox.Show(err.Message);
  41.                         }
  42.                 }
  43.                 void drawpic(Graphics2D g)
  44.                 {
  45.                         g.DrawBitmapBMP(0,0,title);
  46.                         g.DrawBitmapBMP(400,250,charactor);
  47.                         g.DrawText(20,40,"Maganed DirectX 9.0 Part I",Color.White);
  48.                 }

  49.                 /// <summary>
  50.                 /// 清理所有正在使用的资源。
  51.                 /// </summary>
  52.                 protected override void Dispose( bool disposing )
  53.                 {
  54.                         if( disposing )
  55.                         {
  56.                                 if (components != null)
  57.                                 {
  58.                                         components.Dispose();
  59.                                 }
  60.                         }
  61.                         base.Dispose( disposing );
  62.                 }

  63.                 #region Windows 窗体设计器生成的代码
  64.                 /// <summary>
  65.                 /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  66.                 /// 此方法的内容。
  67.                 /// </summary>
  68.                 private void InitializeComponent()
  69.                 {
  70.                         //
  71.                         // Form1
  72.                         //
  73.                         this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
  74.                         this.ClientSize = new System.Drawing.Size(292, 273);
  75.                         this.Name = "Form1";
  76.                         this.Text = "Form1";
  77.                         this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);

  78.                 }
  79.                 #endregion

  80.                 /// <summary>
  81.                 /// 应用程序的主入口点。
  82.                 /// </summary>
  83.                 [STAThread]
  84.                 static void Main()
  85.                 {
  86.                         Form1 app=new Form1();
  87.                         Application.Exit();
  88.                 }

  89.                 private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
  90.                 {
  91.                         if(e.KeyCode==Keys.Escape)
  92.                                 this.Close();
  93.                 }
  94.         }
  95. }

复制代码


某前有个问题就是颜色键只对黑色起作用, 不知道要在哪里改一下.

21

主题

78

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2003-8-14 10:21:00 | 显示全部楼层

Re: 使用Manged DirectX 9.0 --- Part II

这是我把分辨率改为640*480, 运行后屏幕的截图(昨天忘记贴了).
sf_2003814102158.jpg

21

主题

78

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2003-8-14 16:13:00 | 显示全部楼层

Re:使用Manged DirectX 9.0 --- Part II

"""在SetColorKey()函数执行后,原来LP_BITMAPX的图像数据中的黑色(RGB=0,0,0)部分均会被假黑色代替(RGB=0,0,1),所以上面我们设置紫色为ColorKey,HoHo会将原图像中的紫色部分改变为黑色,而原来的黑色部分会被修正为假黑色。"""

是不是在HoHo中使用其他的颜色键也不管用?
看来我也要采取这个办法了.

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20381
发表于 2003-8-14 17:40:00 | 显示全部楼层

Re:使用Manged DirectX 9.0 --- Part II

HoHo只处理纯黑色。

21

主题

78

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2003-8-14 23:40:00 | 显示全部楼层

Re:使用Manged DirectX 9.0 --- Part II

虽然绘图时只使用纯黑色做颜色键, 但使用假黑色的办法我也实现了可以给图片设置任意的颜色为颜色键.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-11-22 01:02

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表