| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2939 人关注过本帖
标题:求<windows.h>画图的完整函数并附解析
取消只看楼主 加入收藏
hedaacm
Rank: 6Rank: 6
来 自:河北保定
等 级:侠之大者
威 望:2
帖 子:400
专家分:418
注 册:2012-1-26
结帖率:79.41%
收藏
已结贴  问题点数:146 回复次数:10 
求<windows.h>画图的完整函数并附解析
求<windows.h>画图的完整函数并附解析。注:不能用tuboc的graphics.h  也不能用VC的MFC。就是在VC环境下的windows
能画出下面的二叉树(其实这棵树为哈夫曼树,叶子结点存有权值)
大家会的,赶快画哈,送分给你

图片附件: 游客没有浏览图片的权限,请 登录注册



[ 本帖最后由 hedaacm 于 2012-11-17 22:21 编辑 ]
搜索更多相关主题的帖子: 画图 二叉树 
2012-11-17 22:16
hedaacm
Rank: 6Rank: 6
来 自:河北保定
等 级:侠之大者
威 望:2
帖 子:400
专家分:418
注 册:2012-1-26
收藏
得分:0 
这次的9、9不是178分    竟然是146     大BUG
2012-11-17 22:18
hedaacm
Rank: 6Rank: 6
来 自:河北保定
等 级:侠之大者
威 望:2
帖 子:400
专家分:418
注 册:2012-1-26
收藏
得分:0 
我知道为啥只有146分了     因为我就剩146分了   
2012-11-17 23:01
hedaacm
Rank: 6Rank: 6
来 自:河北保定
等 级:侠之大者
威 望:2
帖 子:400
专家分:418
注 册:2012-1-26
收藏
得分:0 
回复 4楼 TonyDeng
结个啥子嘛      你这么厉害的人   也不帮帮小生      你把代码放出来我就结     然后。。。。。然后把我所有的分。。。分都给你
2012-11-17 23:21
hedaacm
Rank: 6Rank: 6
来 自:河北保定
等 级:侠之大者
威 望:2
帖 子:400
专家分:418
注 册:2012-1-26
收藏
得分:0 
回复 4楼 TonyDeng
给答案吧     
我知道你windows很好     俺现在还不想学windows     明年再学       如果你不给答案    我会睡不着的   
2012-11-17 23:27
hedaacm
Rank: 6Rank: 6
来 自:河北保定
等 级:侠之大者
威 望:2
帖 子:400
专家分:418
注 册:2012-1-26
收藏
得分:0 
回复 8楼 TonyDeng
折磨。。。。。。好吧  以后我再折磨我自己吧 。。。。不麻烦您了
2012-11-17 23:39
hedaacm
Rank: 6Rank: 6
来 自:河北保定
等 级:侠之大者
威 望:2
帖 子:400
专家分:418
注 册:2012-1-26
收藏
得分:0 
回复 12楼 wp231957
画笔?  你把代码放出来啊
2012-11-18 22:31
hedaacm
Rank: 6Rank: 6
来 自:河北保定
等 级:侠之大者
威 望:2
帖 子:400
专家分:418
注 册:2012-1-26
收藏
得分:0 
回复 11楼 lz1091914999
你就是高手啊    你们应该都学过windows吧    应该能画出吧   我在网上看过能画出的代码:
程序代码:
#include <stdio.h>

#include <string.h>

#include <windows.h>

struct BTree {


 int data;


 struct BTree * left;


 struct BTree * right;

};//end struct BTree

BTree * CreateLeaf(int number)

{


 BTree * l = new BTree;


 l->data = number;


 l->left = 0;


 l->right = 0;


 return l;

}//end CreateLeaf

void append(BTree ** root, int number)

{


 if (!root) return ;


 BTree * t = *root;


 if (!t) {

  *root = CreateLeaf(number);

  return ;


 }//end if


 while(t) {

  if(number == t->data ) return ; //ignore duplicated elements.

  if(number < t->data ) {

   if(!t->left ) {

    t->left = CreateLeaf(number);

    return ;

   }//end if

   t = t->left ;

  }else{

   if(!t->right ) {

    t->right = CreateLeaf(number);

    return ;

   }//end if

   t = t->right ;

  }//end if


 }//end while

}//end append

void PrintLeaf(const BTree * root)

{


 if (!root) return ;


 if (root->left ) PrintLeaf(root->left );


 printf("%d\t", root->data);


 if (root->right ) PrintLeaf(root->right );

}//end printLeaf

void PrintTree (const BTree * root)

{


 printf("[\t");


 PrintLeaf(root);


 printf("]\n");

}//end printTree

BTree * global_root = 0;

int Offsets[32];

int LevelHeight = 50;

void GDIShowTree(HDC h, BTree * root, int level, int center)

{


 if (!root || !h) return ;


 char number[32] = ""; sprintf(number, "%d", root->data );


 int x0 = center; int off = Offsets[level + 1]; int x1 = 0;


 int y0 = level * LevelHeight; int y1 = y0 + LevelHeight;


 if (root->left ) {

  x1 = x0 - off;

  GDIShowTree(h, root->left , level + 1, x1);

  MoveToEx(h, x0, y0, 0);

  LineTo(h, x1, y1);


 }//end if


 if (root->right) {

  x1 = x0 + off;

  GDIShowTree(h, root->right, level + 1, x1);

  MoveToEx(h, x0, y0, 0);

  LineTo(h, x1, y1);


 }//end if


 TextOut(h, x0, y0, number, strlen(number));

}//end GDIShowTree

LRESULT CALLBACK MsgProc(

  HWND hwnd,      // handle to window

  UINT uMsg,      // message identifier

  WPARAM wParam,  // first message parameter

  LPARAM lParam)   // second message parameter

{


 HDC hDC = 0; int i = 0; RECT r = {0, 0, 0, 0}; int width = 0;


 PAINTSTRUCT ps;


 switch(uMsg){


 case WM_PAINT:

  hDC=BeginPaint(hwnd,&ps);

  GetClientRect(hwnd, &r);

  width = r.right ;

  for(i = 0; i < 32; i++) {

   width /= 2;

   Offsets[i] = width;

  }//next i

  GDIShowTree(hDC, global_root, 0, r.right / 2);

  EndPaint(hwnd,&ps);


 break;


 case WM_CLOSE:

  exit(0);


 default:

  return DefWindowProc(hwnd,uMsg,wParam,lParam);


 }//end case


 return 0;

}//end MsgProc

int main(void)

{


 int x = 0; 


 printf("Enter some numbers ended with 0:");


 do {

  scanf("%d", &x);

  append(&global_root, x);


 }while(x);


 PrintTree(global_root);


 WNDCLASS wc;


 wc.cbClsExtra=0;


 wc.cbWndExtra=0;


 wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);


 wc.hCursor=LoadCursor(NULL,IDC_CROSS);


 wc.hIcon=LoadIcon(NULL,IDI_ERROR);


 wc.hInstance=0;


 wc.lpfnWndProc=MsgProc;


 wc.lpszClassName="Binary Tree Demo";


 wc.lpszMenuName=NULL;


 wc.style=CS_HREDRAW | CS_VREDRAW;


 RegisterClass(&wc);


 HWND hwnd;


 hwnd=CreateWindow("Binary Tree Demo","Enoch WILLS 2010",WS_OVERLAPPEDWINDOW,


 0,0,640,480,0,0,0,0);


 ShowWindow(hwnd,SW_MAXIMIZE);


 UpdateWindow(hwnd);


 MSG msg;


 while(GetMessage(&msg,NULL,0,0))


 {

  TranslateMessage(&msg);

  DispatchMessage(&msg);


 }//end while


 return 0;

}//end main


图片附件: 游客没有浏览图片的权限,请 登录注册



2012-11-18 23:03
hedaacm
Rank: 6Rank: 6
来 自:河北保定
等 级:侠之大者
威 望:2
帖 子:400
专家分:418
注 册:2012-1-26
收藏
得分:0 
不过是用C写的     不知能否用C++    求围观   求指导
2012-11-18 23:05
hedaacm
Rank: 6Rank: 6
来 自:河北保定
等 级:侠之大者
威 望:2
帖 子:400
专家分:418
注 册:2012-1-26
收藏
得分:0 
回复 17楼 mmmmmmmmmmmm
真郁闷   自己的问题   最终自己解决了   
2012-11-19 12:29
快速回复:求<windows.h>画图的完整函数并附解析
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.061692 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved