2D 加速图形界面开发源代码亲写 想买来学习得加qq 313244484 20万当前代码,完整400万包写完
#include "StdAfx.h" #include "GUIFrame.h"
#include <stdlib.h> #include <atlstr.h> #include<cstdlib> #include"ASM_VectorAndMritx.h"
////////////////////////////////////////////// GUIFrame::GUIFrame(void) { frameName = ""; width = 100.f; height = 100.f; PostionX = 0.f; PostionY = 0.f; isActive = FALSE; isEnter = false; }
GUIFrame::~GUIFrame(void) { Release(); }
void GUIFrame::Release() {
}
void GUIFrame::Updata() { mouseInQued(); }
float GUIFrame::MouseToWordPositionX(float mouserPosition) { return mouserPosition - (WIDTH * 0.5f); }
float GUIFrame::MouseToWordPositionY(float mouserPosition) { return -(mouserPosition - HEIGHT * 0.5); }
bool GUIFrame::mouseInQued() { lastMouserPosX = MouserPosX; lastMouserPosY = MouserPosY; frameName = frameName; if((MouserPosX >= PostionX+ offset._41+word._41) && (MouserPosX <= (PostionX + offset._41 + word._41 + width))) { if (MouserPosY <= 0) { if ((MouserPosY <= PostionY + offset._42 + word._42) && (MouserPosY >= (PostionY + offset._42 + word._42 - height))) { isEnter = TRUE; //OutputDebugString(frameName.c_str());
return true; } isEnter = false; } else { if ((MouserPosY <= PostionY + offset._42 + word._42) && (MouserPosY >= (PostionY + offset._42 + word._42 - height))) { isEnter = TRUE; //OutputDebugString(frameName.c_str());
return true; } isEnter = false; } isEnter = false; //OutputDebugString(frameName.c_str()); } isEnter = false; //OutputDebugString("nil /n"); return false; }
void GUIFrame::mouseMove(float x,float y) { if (!isActive||!isLMouserDown||!isEnter) { isLMouserDown = false; return; }
word._41 += x; word._42 += y; }
////////////////////////////////////////////// GUIFrame_Qued::GUIFrame_Qued() { }
GUIFrame_Qued::~GUIFrame_Qued() {
}
void GUIFrame_Qued::Release() { GUIFrame::Release(); }
void GUIFrame_Qued::Updata() { GUIFrame::Updata(); }
void GUIFrame_Qued::SetDevice(LPDIRECT3DDEVICE9 device) { Device = device; }
void GUIFrame_Qued::InitFrame(string Name,float Width,float Height,float Postion_x,float Postion_y,string imgName) { frameName = Name; width = Width; height = Height; PostionX = Postion_x; PostionY = Postion_y; D3DXMatrixIdentity(&word); D3DXMatrixIdentity(&offset); // 创建纹理 InitTextrue(imgName);
D3DXCreateBox(Device, 100, 100, 100, &mesh, NULL);
// 创建顶点缓存 Device->CreateVertexBuffer(24 * sizeof(CUSTOMVERTEX), 0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_pVertexBuf, NULL);
// 填充顶点数据 CUSTOMVERTEX *pVertices = NULL; g_pVertexBuf->Lock(0, 0, (void**)&pVertices, 0);
// 正面顶点数据 pVertices[0] = CUSTOMVERTEX(Postion_x, Postion_y, 0.0f, 0.0f, 0.0f); pVertices[1] = CUSTOMVERTEX(Postion_x+ Width, Postion_y, 0.0f, 1.0f, 0.0f); pVertices[2] = CUSTOMVERTEX(Postion_x, Postion_y- Height, 0.0f, 0.0f, 1.0f); pVertices[3] = CUSTOMVERTEX(Postion_x + Width, Postion_y - Height, 0.0f, 1.0f, 1.0f); g_pVertexBuf->Unlock();
// 创建索引缓存 Device->CreateIndexBuffer(36 * sizeof(WORD), 0, D3DFMT_INDEX16, D3DPOOL_DEFAULT, &g_pIndexBuf, NULL);
// 填充索引数据 WORD *pIndices = NULL; g_pIndexBuf->Lock(0, 0, (void**)&pIndices, 0);
// 正面索引数据 pIndices[0] = 0; pIndices[1] = 3; pIndices[2] = 1; pIndices[3] = 0; pIndices[4] = 2; pIndices[5] = 3; g_pIndexBuf->Unlock();
// 设置材质 D3DMATERIAL9 mtrl; ::ZeroMemory(&mtrl, sizeof(mtrl)); mtrl.Ambient = D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f); mtrl.Diffuse = D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f); mtrl.Specular = D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f); Device->SetMaterial(&mtrl);
// 设置环境光漫反射环境光 Device->SetRenderState(D3DRS_AMBIENT, D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f));
//// 设置取景变换矩阵 //D3DXMATRIX matView; //D3DXVECTOR3 vEye(0.0f, 0.0f, -1.0f); //D3DXVECTOR3 vAt(0.0f, 0.0f, 0.0f); //D3DXVECTOR3 vUp(0.0f, 1.0f, 0.0f);
//D3DXMatrixLookAtLH(&matView, &vEye, &vAt, &vUp); //Device->SetTransform(D3DTS_VIEW, &matView);
// 设置投影变换矩阵写死得一半不会重复调用除非改变分辨率和切换平行投影和透视投影 D3DXMATRIX matProj, matOther; //D3DXMatrixPerspectiveFovLH(&matProj, 3.3333333*0.25f, 1.0f, 0.0f, 1000.0f); D3DXMatrixOrthoLH(&matOther, WIDTH, HEIGHT, -100.f, 100.f); Device->SetTransform(D3DTS_PROJECTION, &matOther);
}
void GUIFrame_Qued::InitTextrue(string textrueName) { TextrueName = textrueName; g_pTexture = GImageManage::GetImageManage()->GetImage(textrueName); }
void GUIFrame_Qued::Render()//把鼠标转成世界坐标 { //这些类都在全局静态存储空间,不准跨站调用 //Device->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0); Device->BeginScene(); // 开始绘制 Device->SetTexture(0, g_pTexture); //mesh->DrawSubset(0); // 设置世界变换矩阵 //D3DXMATRIX matWorld; //D3DXMatrixIdentity(&matWorld); ////D3DXMatrixScaling(&matWorld, 0.4f, 0.4f, 0.4f); //matWorld._41 = 2.0f; //Device->SetTransform(D3DTS_WORLD, &matWorld); // //D3DXMATRIX T; //D3DXMATRIX scale,rotation,transfrom; //D3DXMatrixScaling(&scale, 0.5, 0.5, 0.5); //D3DXMatrixRotationX(&rotation, 35);//角度 //D3DXMatrixRotationY(&rotation, -20);//角度 //D3DXMatrixRotationZ(&rotation, 0);//角度 //D3DXMatrixTranslation(&transfrom, 5.f, 2.f, 7.f); //T = rotation * scale*transfrom;//旋转有次序,先旋转是模型自转,后旋转是绕没移动之前得坐标绕转 //D3DXMatrixIdentity(&word);//单位化zoro //Device->SetTransform(D3DTS_WORLD, &T);
D3DXMATRIX T; D3DXMatrixIdentity(&T); //T = offset * word; SSE_MatrixMultiplyMatrix(offset, word, T);//手感老好了特别滑 Device->SetTransform(D3DTS_WORLD, &T);
Device->SetRenderState(D3DRS_CULLMODE, D3DCULL_CW); //// 渲染正方形 //Device->SetStreamSource(0, g_pVertexBuf, 0, sizeof(CUSTOMVERTEX)); //Device->SetFVF(D3DFVF_CUSTOMVERTEX); //Device->SetIndices(g_pIndexBuf); //Device->SetTexture(0, g_pTexture); //Device->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 4, 0, 2); if (isEnter) { Device->SetStreamSource(0, g_pVertexBuf, 0, sizeof(CUSTOMVERTEX)); Device->SetFVF(D3DFVF_CUSTOMVERTEX); Device->SetIndices(g_pIndexBuf); Device->SetTexture(0, g_pTexture); Device->DrawIndexedPrimitive(D3DPT_LINESTRIP, 0, 0, 4, 0, 2); } else { Device->SetStreamSource(0, g_pVertexBuf, 0, sizeof(CUSTOMVERTEX)); Device->SetFVF(D3DFVF_CUSTOMVERTEX); Device->SetIndices(g_pIndexBuf); Device->SetTexture(0, g_pTexture); Device->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 4, 0, 2);
} //D3DXMatrixIdentity(&matWorld); //matWorld._41 = 0.0f;
//Device->SetTransform(D3DTS_WORLD, &matWorld); //// 绘制立方体 //Device->SetStreamSource(0, g_pVertexBuf, 0, sizeof(CUSTOMVERTEX)); //Device->SetFVF(D3DFVF_CUSTOMVERTEX); //Device->SetIndices(g_pIndexBuf); //Device->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 24, 0, 12);
//渲染函数不准夸栈调用 Device->EndScene(); // 结束绘制 //Device->Present(NULL, NULL, NULL, NULL); // 翻转 }
float GUIFrame_Qued::getXPosition() { return offset._41 + word._41; }
float GUIFrame_Qued::getYPosition() { return offset._42 + word._42; }
void GUIFrame_Qued::SetXOfset(float x) { word._41 = x; }
void GUIFrame_Qued::SetYOfset(float y) { word._42 = y; }
void GUIFrame_Qued::OnMsg(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message) { case WM_MOUSEMOVE: MouserPosX = MouseToWordPositionX(LOWORD(lParam)); MouserPosY = MouseToWordPositionY(HIWORD(lParam)); mouseMove(MouserPosX-lastMouserPosX, MouserPosY- lastMouserPosY); //OutputDebugString("sdaadsa\n"); break; case WM_LBUTTONDOWN: MouserPosX = MouseToWordPositionX(LOWORD(lParam)); MouserPosY = MouseToWordPositionY(HIWORD(lParam)); isLMouserDown = true; //OutputDebugString("sdaadsa\n"); break; case WM_LBUTTONUP: isLMouserDown = false; break; } }
GUIFrame * GUIFrame_Qued::CreateGUIFrame_Qued() { return new GUIFrame_Qued; }
2D 加速图形界面开发源代码亲写 想买来学习得加qq 313244484 20万当前代码,完整400万包写完的更多相关文章
- JAVA与图形界面开发(Applet应用程序、AWT库、Swing)
Applet 1)简单说,Applet就是嵌入到网页中的小程序,Java代码. 2)编写Applet程序,要继承JApplet类,并根据自己需要覆写相关方法(init.start.stop.destr ...
- Java GUI图形界面开发工具
Applet 应用程序 一种可以在 Web 浏览器中执行的小程序,扩展了浏览器中的网页功能. 缺: 1.需要下载 Applet 及其相关文件 2.Applet 的功能是受限制的 优: 3.无需 ...
- JAVA 图形界面开发基础详解
与C的win32一样,JAVA也有自己的图形界面开发,将在此篇博客中对基础部分进行讲解. 1.Java提供的图形界面类有哪些? Java提供了两套图形界面 (1)AWT组建(基础) AWT组件是jdk ...
- Java 图形界面开发--图文并茂建立学生管理系统
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/50932501 冷血之心的博客) 图形用户界面(Graphics U ...
- Java Swing 图形界面开发(目录)
Java Swing 图形界面开发(目录) 2017年05月30日 23:50:42 阅读数:5228 本文链接: http://blog.csdn.net/xietansheng/article/d ...
- Java Swing图形界面开发
本文转自xietansheng的CSDN博客内容,这是自己见过的最通俗易懂.最适合快速上手做Java GUI开发的教程了,这里整合一下作为自己以后复习的笔记: 原文地址:https://blog.cs ...
- 只有20行Javascript代码!手把手教你写一个页面模板引擎
http://www.toobug.net/article/how_to_design_front_end_template_engine.html http://barretlee.com/webs ...
- 微信公 众平台开发,用于个人技术交流,有兴趣的加QQ群432921500
微信公 众平台开发,用于个人技术交流,有兴趣的加QQ群432921500
- python 图形界面开发
用python来开发图形界面,确实不是很方便,没有c#,Java,甚至VB来得容易.几个控件拖拽,然后响应事件. 用python写脚本,或者web service来处理一般工作,绰绰有余.但有的时候, ...
随机推荐
- poi 导入Excle
一,AOP 是什么 Apache POI 提供java 程序对Microsoft Office格式文档的读写功能操作 二,所需要的jar包 三,实现代码 1, 读取Excle 返回Workbook格式 ...
- 树莓派3代刷ubuntu mate在命令行下配置wifi不能连接的一个诡异的bug的解决
家里路由器不在自己卧室,用树莓派考虑用wifi,之前用Raspberry官方系统,按照教程写的wpa.conf可以连接wifi,后来重新刷ubuntu mate 16.04就不好用了 各种找原因,后来 ...
- .NET、C#和ASP.NET、ASP.NET MVC四者之间的区别
什么是.NET? .NET是微软公司下的一个开发平台,.NET核心就是.NET Framwork(.NET框架)是.NET程序开发和运行的环境,在这个平台下可以用不同的语言进行开发,因为.NET是跨语 ...
- Windows下安装Anaconda
Windows下安装Anaconda Anaconda介绍 Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项.因为包含了大量的科学 ...
- selenium-xpath练习
- 第 10 章 容器监控 - 079 - 监控利器 sysdig
sysdig 是一个轻量级的系统监控工具,同时它还原生支持容器. 通过 sysdig 我们可以近距离观察 linux 操作系统和容器的行为. Linux 上有很多常用的监控工具,比如 strace,t ...
- vuex 改变状态值得命名问题
今天在做vuex的状态的时候 发现了个奇葩的问题,后面解决了,在改变状态的值得时候 传值的名称 不要和定义的状态的名称值相同,要不然会报错,如图所示 也就是password的名称不能相同,要不监测不到 ...
- HeadFirstPython学习笔记——OSError: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。
1.文件构成如下 2.运行服务器时报错 OSError: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试. 解决方法:更换端口 3.Python的CGI跟踪术 在 ...
- Educational Codeforces Round 5F. Expensive Strings
题意:给n个串ti,ps,i是s在ti中出现的次数,要求找到s,使得\(\sum_{i=1}^nc_i*p_{s,i}*|s|\)最大 题解:sam裸题,每次插入时相当于在fail链上到1的位置加ci ...
- aggregate基础 使用记录
mongoDB中聚合(aggregate)的具体使用 我们可以用$指定字段来表示选定的document的field,另外可以使用$$ROOT来表示选定的document的所有内容(例如:chosenD ...