win32显示位图

转载 2012年03月30日 19:18:19
            位图信息显示
 程序思路:
           是很普通的思路,网上已经说了很多遍了,就是创建dc、创建兼容dc、
    加载位图、显示位图。
 
           在这个函数里,工程是空的工程,所以,窗口的创建是需要代码创建的。
    使用的数据结构是:WNDCLASS和  函数:RegisterClass()、CreateWindow()。
 
 使用到的函数:
              1.LoadImage()——加载磁盘上的位图,如果在IDE里添加资源的方式
                  添加位图,那么使用函数是:LoadBitmap()
  2.CreateCompatibleBitmap()——创建兼容位图
  3.CreateCompatibleDC()——创建兼容dc
  4.SelectObject()——选择对象
  5.BitBlt()——显示位图,如果需要缩放就用StretchBlt()
     
 存在的问题:
             1.如果改变窗口大小的速度很快的时候,就死掉了,不知道为什么
  2.鼠标在窗口上晃动的时候屏幕会闪、会出现一条水平的白线
 
         I don't know how to reslove it  :(


#include <stdio.h>
#include <windows.h>

LRESULT CALLBACK WindowProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
);


HINSTANCE g_hInstance;

int WINAPI WinMain(
  HINSTANCE hInstance,  // handle to current instance
  HINSTANCE hPrevInstance,  // handle to previous instance
  LPSTR lpCmdLine,      // pointer to command line
  int nCmdShow      // show state of window     
  ){


WNDCLASS fans;
fans.style=CS_HREDRAW | CS_VREDRAW ;
fans.lpfnWndProc=WindowProc;
fans.cbClsExtra=0;
fans.cbWndExtra=0;
fans.hInstance=hInstance;//这个就是WinMain函数的第一个参数。
    fans.hIcon=LoadIcon(NULL,IDI_ERROR);
fans.hCursor=LoadCursor(NULL,IDC_CROSS);
fans.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
fans.lpszMenuName=NULL;
fans.lpszClassName="Idontknow";
RegisterClass(&fans);
    g_hInstance=hInstance;

HWND h;
h=CreateWindow("Idontknow",
"woshinid",
WS_OVERLAPPEDWINDOW,
100,100,800,480,
NULL,NULL,
hInstance,
NULL);
    ShowWindow(h,SW_SHOWNORMAL);
    UpdateWindow(h);
    MSG msg;
while(GetMessage(&msg,NULL,0,0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return 0;

}


LRESULT CALLBACK WindowProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
  ){
PAINTSTRUCT paintinformation;
HDC hdc;
switch(uMsg)
{
case WM_LBUTTONDOWN:
break;
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_PAINT:
{
hdc=BeginPaint(hwnd,&paintinformation);
RECT rect;
GetClientRect(hwnd,&rect);
HBITMAP  bimp = (HBITMAP)LoadImage(NULL,
"C:\aa.bmp",IMAGE_BITMAP,1280,800,LR_LOADFROMFILE);
CreateCompatibleBitmap(hdc,1280,800);
HDC hh=CreateCompatibleDC(NULL);
SelectObject(hh,bimp);
BitBlt(hdc,0,0,400,200,hh,0,0,SRCCOPY);
EndPaint(hwnd,&paintinformation);
            ReleaseDC(hwnd,hh);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}


ReleaseDC(hwnd,hdc);

return 0L;
}//WindowProc()函数结束

WIN32汇编语言中位图的使用

说到位图,我们其实很早就接触过,从最早接触计算机,我们应该就知道有图片这个东西,然后再进一步说,图片在电脑上有好几种格式比如jpg. gif .png....
  • qq_22642239
  • qq_22642239
  • 2016年04月18日 11:12
  • 2898

win32api显示BMP图片的最简单方案

一、用自带资源 /*--------------------------------------- BITBLT.C -- BitBlt Demonstration ...
  • sj361169
  • sj361169
  • 2015年12月29日 23:48
  • 2075

Win32 GDI+ 学习笔记(一)之win32显示图片

1、使用环境:          VS2013 + win7 32位 2、GDI+使用:           1、打开Vs2013,在里面创建一个简单的Win32 程序:(打开Vs2013->"文件(...
  • GyaoG
  • GyaoG
  • 2016年06月04日 16:01
  • 2237

win32应用程序基础框架及位图的显示

// c++test.cpp : 定义控制台应用程序的入口点。 #include "StdAfx.h" //窗口函数声明 LRESULT CALLBACK WndProc(HWND, UINT, WP...
  • fanhenghui
  • fanhenghui
  • 2014年12月28日 15:45
  • 314

<Win32_12>位图的透明效果——AlphaBlend函数的用法

我们知道位图中大多都有alpha信息(图像通道),专用于位图的透明 今天使用的这个函数AlphaBlend——从名字上看,是"Alpha混合"的意思——那么既然是Alpha,也就和位图的透明相关了  ...
  • crocodile_
  • crocodile_
  • 2013年08月21日 18:22
  • 6706

WIN32工程加载一张BMP格式位图

win32工程加载一张BMP格式位图 环境:win10, x64,vs2015_pro版 创建一个win32 的工程,可以是空项目,也可以不是。我创建的不是空项目,所以很多代码自动生成了,主要是修...
  • xgredy
  • xgredy
  • 2017年06月21日 15:54
  • 518

【win32】day08-位图的使用/坐标系和映射模式/文字和字体/对话框

位图的使用 1 位图 - 通过保存图像上每个点的颜色,生成相应的位图文件。    光栅图 - 可以理解为图像点阵的保存  矢量图 - .wmf  可以理解为绘图命令的保存 2 位图资源的使用   2...
  • waldmer
  • waldmer
  • 2016年09月18日 21:25
  • 1042

win32SDK中使用bmp和png位图

Win32SDK.h #pragma once #include #include #include #include #include #pragma comment(lib,"gdipl...
  • qq125096885
  • qq125096885
  • 2015年04月21日 10:50
  • 991

<Win32_3>Bitmap位图应用2 ------ 键盘控制人物走动

今天掌握了Bitmap的用法,忍不住再来一次升级版的应用------用键盘控制人物的走动,这个可能在游戏设计中用的很多,不过今儿就先来小试牛刀,呵呵……   本人学习编程有个"癖好"  —— 那就是有...
  • crocodile_
  • crocodile_
  • 2013年07月24日 16:56
  • 3577

使用Win32/MFC实现Splash窗口(含有alpha通道的位图窗口)

通常使用::SetWindowRgn来设置不规则region,从而实现不规则窗体,然而有时希望实现带alpha通道的位图来作为窗口,所以使用layer window的UpdateLayeredWind...
  • tangyin025
  • tangyin025
  • 2012年12月08日 12:11
  • 2101
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:win32显示位图
举报原因:
原因补充:

(最多只允许输入30个字)