| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1208 人关注过本帖
标题:自己用API函数做了一个四叶风车的图形,但是想让它转动起来,求帮助!
只看楼主 加入收藏
菜鸟曾
Rank: 2
等 级:论坛游民
帖 子:7
专家分:20
注 册:2011-6-10
结帖率:0
收藏
已结贴  问题点数:0 回复次数:4 
自己用API函数做了一个四叶风车的图形,但是想让它转动起来,求帮助!
#include<windows.h>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
int nMode;
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)
{
    HWND hwnd;
    MSG Msg;
    WNDCLASS wndclass;
    char lpszClassName[]="映像模式";
    char lpszTitle[]="动态风车";
    wndclass.style=0;
    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=(HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.lpszMenuName=NULL;
    wndclass.lpszClassName=lpszClassName;
    if(!RegisterClass(&wndclass))
    {
        MessageBeep(0);
        return FALSE;
    }
    hwnd=CreateWindow
        (
        lpszClassName,
        lpszTitle,
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        NULL,
        NULL,
        hInstance,
        NULL
        );
    ShowWindow(hwnd,nCmdShow);
    UpdateWindow(hwnd);
    while(GetMessage(&Msg,NULL,0,0))
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    return Msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lparam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    HBRUSH hB1,hB2,hB3,hB4;
    switch(message)
    {
    case WM_LBUTTONDOWN:
        nMode=MM_ISOTROPIC;
        InvalidateRect(hwnd,NULL,1);
        break;
    case WM_RBUTTONDOWN:
        nMode=MM_ANISOTROPIC;
        InvalidateRect(hwnd,NULL,1);
        break;
    case WM_PAINT:
        hdc=BeginPaint(hwnd,&ps);
        SetMapMode(hdc,nMode);
        SetWindowExtEx(hdc,150,150,NULL);
        SetViewportExtEx(hdc,150,100,NULL);
        SetViewportOrgEx(hdc,150,60,NULL);
        hB1=CreateSolidBrush(RGB(0,250,0));
        hB2=CreateSolidBrush(RGB(250,0,0));
        hB3=CreateSolidBrush(RGB(0,0,250));
        hB4=CreateSolidBrush(RGB(100,0,100));
        SelectObject(hdc,hB1);
        Pie(hdc,100,100,300,300,300,200,100,200);
        SelectObject(hdc,hB2);
        Pie(hdc,200,0,400,200,300,200,300,-100);
        SelectObject(hdc,hB3);
        Pie(hdc,300,100,500,300,300,200,500,200);
        SelectObject(hdc,hB4);
        Pie(hdc,200,200,400,400,300,200,300,400);
        EndPaint(hwnd,&ps);
        DeleteObject(hB1);
        DeleteObject(hB2);
        DeleteObject(hB3);
        DeleteObject(hB4);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hwnd,message,wParam,lparam);
    }
    return 0;
}
搜索更多相关主题的帖子: 图形 include 动态 
2011-09-25 11:09
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:5 
使用定时器吧!多少时间转动一次!

愿用余生致力编程
2011-09-25 12:18
菜鸟曾
Rank: 2
等 级:论坛游民
帖 子:7
专家分:20
注 册:2011-6-10
收藏
得分:0 
回复 2楼 我菜119
关键是怎么使他转动起来。不知道该怎么办啊。
2011-09-25 20:13
huangbijun
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2011-2-12
收藏
得分:5 
期待中~~~~~~~~~
2011-09-25 21:56
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
转动也就是变换坐标呗,我只是提一个建议,你可以设置一个定时器,在处理定时器消息时对坐标进行变换,这样就会出现转动的效果了!

愿用余生致力编程
2011-09-25 22:02
快速回复:自己用API函数做了一个四叶风车的图形,但是想让它转动起来,求帮助!
数据加载中...
 
   



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

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