- 浏览: 24698 次
- 性别:
- 来自: 东莞
最新评论
-
flythink:
oledb是不是更容易弄一些? 纯猜测
MS ODBC for DMD 2.053 -
hqs7636:
8错,继续完善一下。。。
MS ODBC for DMD 2.053 -
rocex:
lz的这个工具好用,可以随时在1.x和2.x上切换。
DEx ...
D2/Phobos与D2/Tango一键切换编译环境设置 -
Colorful:
链接是这个 : http://code.google.com/ ...
Windows D编程类封装初步学习并请教 -
betty_betty2008:
哥们:链接打不开
Windows D编程类封装初步学习并请教
[img]C:\Documents and Settings\All Users\Documents\My Pictures\示例图片\Sunset.jpg[/img]从国外一个网站上抄来的,是用C+SDK写的,惭愧看不大懂,转成D版本先:
运行时截图:
module flower; import std.stdio; import std.string; import std.conv; import std.math; import std.algorithm; import core.runtime; //import core.stdc.math; import win32.windows; import samsTools.utils:toCstring; const double Pi=3.1415926; static TCHAR[256] szAppName=cast(char[256])"flower"; static const char[256] caption=cast(char[256])"SDK Flower Example"; int xo=320,yo=860; int r=0,g=0,b=0; HDC hddc; float alfa0,beta0,gamma0,Riduzione; struct elem2 { float x; float y; }; struct elem3 { float x; float y; float z; }; float sen (float r) { return sin(r); } int Round (float nf) { int k; float t,f; k=cast(int)nf; t=cast(float)k; f=nf-t; if (f>0.50) k++; if (f<-0.50) k--; return k; } void putpixel (int x,int y) { SetPixel(hddc,x,y,RGB(cast(ubyte)r,cast(ubyte)g,cast(ubyte)b)); } void setcolor (int col) { if (col==15) {r=0;g=0;b=255;} if (col==14) {r=255;g=0;b=0;} if (col==13) {r=0;g=255;b=0;} if (col==12) {r=255;g=0;b=0;} if (col==11) {r=0;g=255;b=255;} if (col==10) {r=0;g=255;b=0;} if (col==9) {r=0;g=0;b=255;} if (col==8) {r=255;g=0;b=0;} if (col==7) {r=0;g=100;b=0;} } void swap(int *a, int *b) { int t; t=*b; *b=*a; *a=t; } void dasline (int x1,int y1,int x2,int y2) { int x,dx,incx; int y,dy,incy; int s,i,pxy,sw; dx=abs(x2-x1); dy=abs(y2-y1); if (x1>x2) incx=-1; else incx=1; if (y1>y2) incy=-1; else incy=1; if (dy>dx) { swap(&dx,&dy); swap(&incx,&incy); swap(&x1,&y1); sw=1; } else sw=0; pxy=dx; dx=dx-dy; s=dy; x=x1; y=y1; if (sw) putpixel(y,x); else putpixel(x,y); for (i=0;i<pxy;i++) { x+=incx; if (s>0) {s-=dx; y+=incy;} else {s+=dy;} if (sw) putpixel(y,x); else putpixel(x,y); } } void RAss (elem3 *Vt, float xo, float yo, float zo, float alfa,float beta,float gamma) { float x2,y2,z2,x1,y1,z1,x,y,z; x2=Vt.x ; y2=Vt.y ; z2=Vt.z ; x1=x2*cos(gamma)-z2*sen(gamma); z1=x2*sen(gamma)+z2*cos(gamma); z=z1*cos(beta)-y2*sen(beta)+zo; y1=z1*sen(beta)+y2*cos(beta); x=x1*cos(alfa)-y1*sen(alfa)+xo; y=x1*sen(alfa)+y1*cos(alfa)+yo; Vt.x=x; Vt.y=y; Vt.z=z; } void Rids (elem3 *vt3,elem2 *vt2) { float fi,yp; vt2.x=-vt3.z*sen(Pi/4)+vt3.x*cos(Pi/4); fi=0.5; yp=-vt3.x*sen(fi)+vt3.y*cos(fi); vt2.y=-vt3.z*sen(fi)+yp*cos(fi); } void Co(elem2 *vp, elem2 *vf) { int X1,X2,Y1,Y2; X1=xo+cast(int)(vp.x); Y1=yo-cast(int)(vp.y); X2=xo+cast(int)(vf.x); Y2=yo-cast(int)(vf.y); dasline(X1,Y1,X2,Y2); } void Disegna (float R,float Xo,float Yo,float Zo, float alfa,float beta,float gamma) { int i; elem2 V2[3]; elem3 V3[3]; V3[1].x=0 ; V3[1].y=R ; V3[1].z=0 ; V3[2].x=0 ; V3[2].y=0 ; V3[2].z=0; for (i=1;i<3;i++) RAss (&V3[i],Xo,Yo,Zo,alfa,beta,gamma); for (i=1;i<3;i++) Rids (&V3[i],&V2[i]); Co (&V2[1],&V2[2]); } void Frattale (int n, float R,float Xrif,float Yrif,float Zrif, float Rifa,float Rifb,float Rifg) { int rip; float R1,PasAlfa,PasBeta,PasGamma; elem3 pv; elem3 V3[3]; if (n<9) { V3[1].x=0 ; V3[1].y=R ; V3[1].z=0 ; V3[2].x=R ; V3[2].y=0 ; V3[2].z=0; R1=R/Riduzione; for (rip=1;rip<4;rip++) { pv.x=V3[1].x; pv.y=V3[1].y; pv.z=V3[1].z; switch (rip) { case 1 : PasAlfa=Rifa+alfa0; PasBeta=Rifb+beta0; PasGamma=Rifg+gamma0; break; case 2 : PasAlfa=Rifa-alfa0; PasBeta=Rifb-beta0; PasGamma=Rifg-gamma0; break; case 3 : PasAlfa=Rifa+alfa0; PasBeta=Rifb-beta0; PasGamma=Rifg-gamma0; } if (n<2) setcolor(10); if ((n>1) && (n<8)) setcolor(15); if (n==8) setcolor(12); RAss (&pv,Xrif,Yrif,Zrif,Rifa,Rifb,Rifg); Disegna(R1,pv.x,pv.y,pv.z,PasAlfa,PasBeta,PasGamma); Frattale(n+1,R1,pv.x,pv.y,pv.z,PasAlfa,PasBeta,PasGamma); } } } void fracto() { setcolor(10); Riduzione=2.0; alfa0=-0.3; beta0=0.2; gamma0=0.1; Frattale(0,500,0,0,0,0,0,0); } extern(Windows) int WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow) { //initialize D runtime Runtime.initialize; runModuleUnitTests; HWND hwnd; MSG msg; WNDCLASS wndclass; wndclass.style=CS_HREDRAW|CS_VREDRAW; wndclass.lpfnWndProc=&WndProc; wndclass.cbClsExtra=0; wndclass.cbWndExtra=0; wndclass.hInstance=hInstance; wndclass.hIcon=LoadIcon(null,IDI_APPLICATION); wndclass.hCursor=LoadCursor(null,IDC_ARROW); wndclass.hbrBackground=cast(HBRUSH)(COLOR_3DFACE+1);//GetStockObject(WHITE_BRUSH) wndclass.lpszMenuName=null; wndclass.lpszClassName=cast(const(char*))szAppName; if(! RegisterClass(&wndclass)) { MessageBox(null,toCstring("Program requires Windows NT!"), cast(char*)szAppName,MB_ICONERROR); return 0; } hwnd=CreateWindow(szAppName.ptr,caption.ptr, WS_OVERLAPPEDWINDOW/*|WS_VSCROLL|WS_HSCROLL*/, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, null,null,hInstance,null); ShowWindow(hwnd,iCmdShow); UpdateWindow(hwnd); while(GetMessage(&msg,null,0,0)>0) { TranslateMessage(&msg); DispatchMessage(&msg); } //dispose D runtime: Runtime.terminate; return msg.wParam; } extern(Windows) LRESULT WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; RECT rect; switch(message) { case WM_CREATE: return 0; case WM_PAINT: hdc=BeginPaint(hwnd,&ps); GetClientRect(hwnd,&rect); hddc=hdc; fracto(); EndPaint(hwnd,&ps); return 0; case WM_DESTROY: PostQuitMessage(0); break; case WM_CLOSE: PostMessage(null,WM_QUIT,0,0); break; default: break; } return DefWindowProc(hwnd,message,wParam,lParam); }
运行时截图:
发表评论
-
D2 下win32 api 中文框架备忘
2011-07-28 17:49 1041隔一段时间就忘了怎么在D2下win32 SDK框架里使用中文, ... -
MS ODBC for DMD 2.053
2011-05-20 16:49 1217东拼西凑,终于在dmd2.053下成功连接上了ODBC 数据库 ... -
截屏、闪屏(Timer)、输入窗口--DFL for D2.053
2011-05-16 17:41 1271这个小练习用D2.053+DFL完成了以下功能: 1.截屏(C ... -
json for D2.034
2009-10-13 19:54 718作者:Jeremie Pelletier 链接: [url] ... -
D2 中使用VC的Windows资源文件
2009-09-15 15:26 1225终于试成功了。总结一下: 一.在*.RC里包含window ... -
windows vfw.lib
2009-09-07 20:06 1327上传到这里,因为有时候改变工作地点后另一台机上没有。:P -
Windows D编程类封装初步学习并请教
2009-09-01 18:37 1212首先把要请教的问题写在最顶部: 1。事件最好的包装方法是怎样的 ... -
再学SQLite3 API
2009-08-21 17:48 2237这次进一步看了看SQLigte3 的API,不用上次写的类包装 ... -
"D"iving Into the D Programming Language
2009-08-04 16:23 1585"D"iving Into the D P ... -
练习:boost.timer 转D2
2009-07-21 12:32 1322中间解决了好几个问题,尚有几个问题没解决,已在NG上提问。备忘 ... -
Sqlite3 C++类库Sharplite 转D
2009-07-17 16:32 1658这是一份作业,因为所有创作的部分都是前人的。 材料:1.sql ... -
D2 反射和defineEum! 练习
2009-07-16 14:21 867备忘: module DioApp; imp ... -
D2 std.stream 文件读写小练习
2009-07-13 19:12 1777笔记要点: 1。个人工具包samsTools 工具之一Prom ... -
DFL for DMD2.031
2009-07-10 16:33 907从NG里要到的,俺测过了,OK 的啦. 原贴原下载地址链接: ... -
D2/Phobos与D2/Tango一键切换编译环境设置
2009-05-08 18:01 1167一。适合谁: 象俺一样,反反复复搭不起D编译环境的小菜 二。不 ... -
(翻译)Phobos 2.029 R部 std.random
2009-04-27 14:58 1317std.random ... -
(翻译)Phobos 2.029 P部 std.process
2009-04-23 11:57 1158std.process ... -
(翻译)Phobos 2.029 P部 std.path
2009-04-23 10:52 1318std.path ...
相关推荐
标题中的“基于SDK的树形控件演示程序”是指一个使用软件开发工具包(SDK)创建的示例项目,该程序展示了如何在应用程序中实现和操作树形控件。树形控件是一种常见的用户界面元素,它允许用户以层级结构显示数据,常...
《Windows SDK与象棋程序开发》 ...通过以上步骤,我们可以利用Windows SDK构建一个功能完善的象棋游戏。尽管过程可能复杂,但Windows SDK提供的丰富资源和工具将极大地助力开发者,使项目得以顺利完成。
ExtJS 是一个流行的JavaScript框架,用于构建富客户端的Web应用程序。它提供了丰富的用户界面组件、数据绑定机制和强大的API,使开发者能够创建功能强大的、响应式的桌面和移动应用。7.6版本是ExtJS的一个重要更新,...
我们需要解析这些数据,构建一个骨骼树,然后在每一帧根据动画数据更新每个骨骼的变换矩阵。这一步通常通过计算关节之间的相对变换并应用到相应的OpenGL模型矩阵来实现。为了在OpenGL中播放动画,需要在每一帧调用...
**SpeedTree 4.1 SDK** 是一个专为游戏开发和视觉效果设计的高级树木建模和渲染技术软件开发工具包。它提供了高效且逼真的树木生成和渲染解决方案,广泛应用于游戏引擎、电影特效以及虚拟现实环境。SDK 包含了以下几...
OpenSceneGraph是一个开源的图形库,专为实时3D应用程序设计,如科学可视化、游戏开发、虚拟现实等。版本3.6.5是这个库的一个稳定版本,包含了库文件和必要的头文件,允许开发者在Visual Studio项目中进行编程。 **...
在JavaFX中,开发者可以利用Scene Graph来构建UI,这是一个树形结构,表示UI元素的层次关系。Scenes、Nodes、Layouts等概念构成了Scene Graph的基本元素。此外,JavaFX还提供了丰富的预定义控件,如按钮、文本框、...
Qooxdoo是一个开源的JavaScript框架,用于构建富互联网应用程序(RIA)。它的1.3版本SDK是一个开发工具包,包含了创建、编译和运行Qooxdoo应用所需的所有组件和工具。下面将详细介绍Qooxdoo 1.3 SDK中的核心知识点。...
Degrafa是一个图形化开发框架,它主要用于创建2D图形应用程序,特别是在Swing或JavaFX平台上。这个资源包包括了SDK的4.0兼容版本,这意味着你可以利用这个框架来开发与Java SDK 4.0相适应的应用。"含SDK4.0兼容版本...
程序通常提供一个友好的图形用户界面(GUI),允许用户输入文本、导入图片、设置样式等。完成后,程序会将所有内容打包成适合手机阅读的格式,如EPUB或PDF。 3. **Java编程基础** 在使用这个程序前,熟悉Java基础...
树形控件在计算机界面上通常以节点的形式展现,节点之间存在父子关系,形成一个层级结构。用户可以通过展开和折叠节点来查看或隐藏子节点,方便对复杂数据进行组织和操作。 2. **Android中的树形控件** Android ...
这个程序的核心在于利用Android SDK提供的各种工具和技术来创建一个互动的、动态的视觉体验,让用户在手机或平板电脑上也能感受到节日的氛围。 首先,我们需要对Android应用开发的基础知识有所了解。Android应用...
### iPhone SDK Programming with Objective-C 知识点概览 #### 一、图书介绍与目标读者 - **书名**:《Beginning ...无论是想要成为一名专业iOS开发者还是希望扩展自己技能树的程序员,本书都是一个非常好的起点。
Flutter SDK 是一个全面的开发工具包,用于构建高性能、高保真、跨平台的移动应用程序。这个名为 "fluttersdk.7z" 的压缩文件很可能包含了Flutter SDK的完整安装包,便于开发者在本地环境中搭建Flutter开发环境。...
《迷宫程序(VC图形化界面)》是基于VC++开发的一款交互式迷宫求解应用,它结合了广度优先搜索算法与Windows API及SDK技术,为用户提供了一个直观、可自定义的迷宫环境。下面我们将深入探讨该程序的核心知识点。 ...
在.NET框架中,`OpenXML`库是一个强大的工具,它允许开发者直接操作Microsoft Office文档,如Word、Excel和PowerPoint,而无需启动Office应用程序。在这个特定的案例中,我们关注的是如何使用`OpenXML`来读取...
说明了如何设计一个关于程序的信息页面,通常包含版本号、版权信息等内容,并可通过菜单项访问。 - **3.18 程序加载中~请稍后——ProgressDialog与线程整合应用** 讲解了如何使用ProgressDialog显示加载进度,...
10. **工具和框架**:Visual Studio作为开发环境,搭配DirectX SDK,可以方便地进行DirectX程序编写。此外,还有许多第三方库,如Assimp用于模型导入,Bullet或PhysX提供物理模拟,帮助开发者更高效地实现动画功能。...
这个"Android代码-树形控件源码.zip"压缩包包含了一个实现树形控件的源代码示例,可以帮助开发者更好地理解和使用这种控件。下面我们将详细探讨树形控件在Android中的实现原理、常见应用场景以及如何自定义和优化。 ...