资源简介
在别人的一个项目基础上重写的,不再使用源管理器提供的源选择对话框和源用户界面,自定义界面上可以选择扫描设备,设置单双面打印,设置黑白或者彩色打印、设置纸张大小、设置分辨率,不过自定义界面是非常粗糙的,只是提供了可以修改几种常用参数的方法。
代码片段和文件信息
#include “stdafx.h“
#include “math.h“
#include “DIB.h“
#define BIG_DISTANCE 10000000L
#define DIST(r1g1b1r2g2b2) \
(long) (3L*(long)((r1)-(r2))*(long)((r1)-(r2)) + \
4L*(long)((g1)-(g2))*(long)((g1)-(g2)) + \
2L*(long)((b1)-(b2))*(long)((b1)-(b2)))
static unsigned char masktable[] = { 0x800x400x200x100x080x040x020x01 };
CDIB::CDIB(HANDLE hDibint nBits)
{
m_pVoid = NULL;
m_pLinePtr = NULL;
m_bUseGamma=FALSE;
width=height=0;
if(hDib)
{
CreateFromHandle(hDibnBits);
}
}
CDIB::~CDIB()
{
DestroyDIB();
}
void CDIB::DestroyDIB()
{
if(m_pVoid) free(m_pVoid);
m_pVoid = NULL;
if(m_pLinePtr) free(m_pLinePtr);
m_pLinePtr = NULL;
}
BOOL CDIB::Create(int widthint heightint bits)
{
/*
Free existing image
*/
DestroyDIB();
// ASSERT(bits == 24 || bits == 8);
BITMAPINFOHEADER bmInfo;
memset(&bmInfo0sizeof(BITMAPINFOHEADER));
bmInfo.biSize = sizeof(BITMAPINFOHEADER);
bmInfo.biWidth = width;
bmInfo.biHeight = height;
bmInfo.biPlanes = 1;
bmInfo.biBitCount = bits;
bmInfo.biCompression = BI_RGB;
return Create(bmInfo);
}
BOOL CDIB::Create(BITMAPINFOHEADER& bmInfo)
{
bytes = (bmInfo.biBitCount*bmInfo.biWidth)>>3;
height = bmInfo.biHeight;
width = bmInfo.biWidth;
// bmInfo.biHeight *= -1;
while(bytes%4) bytes++;
int size;
size = sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD)*GetPaletteSize(bmInfo) + bytes*height;
m_pVoid = (void *)malloc(size);
if(!m_pVoid) return FALSE;
m_pInfo = (PBITMAPINFO )m_pVoid;
memcpy((void *)&m_pInfo->bmiHeader(void *)&bmInfosizeof(BITMAPINFOHEADER));
m_pRGB = (RGBQUAD *)((unsigned char *)m_pVoid + sizeof(BITMAPINFOHEADER)) ;
m_pBits = (unsigned char *)(m_pVoid) + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD)*GetPaletteSize();
int i;
BYTE **ptr;
m_pLinePtr = (BYTE **)malloc(sizeof(BYTE *)*height);
if(!m_pLinePtr) return FALSE;
for(i=0ptr=m_pLinePtr; i < height; i++ptr++)
{
//*ptr = (int)(m_pBits)+(i*bytes);
//*ptr = (int)GetLinePtr(i);
*ptr = m_pBits + (height-i-1)*bytes;
}
m_nFlags = 0;
return TRUE;
}
void CDIB::SetPalette(unsigned char *palette)
{
int isize;
RGBQUAD *rgb;
if(!palette) return;
size = GetPaletteSize();
for(i=0rgb = m_pRGB; i < size; i++rgb++palette+=3)
{
if(m_bUseGamma)
{
rgb->rgbRed = Gamma[palette[0]];
rgb->rgbGreen = Gamma[palette[1]];
rgb->rgbBlue = Gamma[palette[2]];
}
else
{
rgb->rgbRed = palette[0];
rgb->rgbGreen = palette[1];
rgb->rgbBlue = palette[2];
}
rgb->rgbReserved = (BYTE)0;
}
}
void CDIB::SetPalette(RGBQUAD *pRGB)
{
int size;
if(!pRGB) return;
size = GetPaletteSize();
memcpy(m_pRGBpRGBsize*sizeof(RGBQUAD));
}
int CDIB::GetPaletteSize()
{
return GetPaletteSize(m_pInfo->bmiHeader);
}
int CDIB::GetPaletteSize(BITMAPINFOHEADER& bmInfo)
{
switch(bmInfo.biBitCount)
{
case 1:
return 2;
case 4:
return 16;
case 8:
re
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 193536 2014-08-14 15:37 MyTwain\Debug\MyTwain.exe
文件 1429528 2014-08-14 15:37 MyTwain\Debug\MyTwain.ilk
文件 5204992 2014-08-14 15:37 MyTwain\Debug\MyTwain.pdb
文件 3758 2014-08-14 15:37 MyTwain\MyTwain\Debug\cl.command.1.tlog
文件 73452 2014-08-14 15:37 MyTwain\MyTwain\Debug\CL.read.1.tlog
文件 4594 2014-08-14 15:37 MyTwain\MyTwain\Debug\CL.write.1.tlog
文件 73420 2014-08-13 11:06 MyTwain\MyTwain\Debug\DIB.obj
文件 2 2014-08-14 15:37 MyTwain\MyTwain\Debug\li
文件 2 2014-08-14 15:37 MyTwain\MyTwain\Debug\li
文件 2 2014-08-14 15:37 MyTwain\MyTwain\Debug\li
文件 2 2014-08-14 15:37 MyTwain\MyTwain\Debug\li
文件 2 2014-08-14 15:37 MyTwain\MyTwain\Debug\li
文件 2 2014-08-14 15:37 MyTwain\MyTwain\Debug\li
文件 2 2014-08-14 15:37 MyTwain\MyTwain\Debug\li
文件 2 2014-08-14 15:37 MyTwain\MyTwain\Debug\li
文件 2 2014-08-14 15:37 MyTwain\MyTwain\Debug\li
文件 2 2014-08-14 15:37 MyTwain\MyTwain\Debug\li
文件 2100 2014-08-14 15:37 MyTwain\MyTwain\Debug\li
文件 5944 2014-08-14 15:37 MyTwain\MyTwain\Debug\li
文件 1476 2014-08-14 15:37 MyTwain\MyTwain\Debug\li
文件 760 2014-08-14 15:37 MyTwain\MyTwain\Debug\mt.command.1.tlog
文件 704 2014-08-14 15:37 MyTwain\MyTwain\Debug\mt.read.1.tlog
文件 522 2014-08-14 15:37 MyTwain\MyTwain\Debug\mt.write.1.tlog
文件 2173 2014-08-13 11:06 MyTwain\MyTwain\Debug\MyTwain.Build.CppClean.log
文件 667 2014-08-13 11:06 MyTwain\MyTwain\Debug\MyTwain.exe.em
文件 732 2014-08-13 11:06 MyTwain\MyTwain\Debug\MyTwain.exe.em
文件 381 2014-08-14 15:37 MyTwain\MyTwain\Debug\MyTwain.exe.intermediate.manifest
文件 66 2014-08-14 15:37 MyTwain\MyTwain\Debug\MyTwain.lastbuildstate
文件 4299 2014-08-14 15:37 MyTwain\MyTwain\Debug\MyTwain.log
文件 51522 2014-08-14 15:35 MyTwain\MyTwain\Debug\MyTwain.obj
............此处省略50个文件信息
- 上一篇:Qt实现二值细胞图像区域上色
- 下一篇:计算机组成原理54条Mips指令实验
相关资源
- 基于QT开发CAN总线上位机
- VS2017+QT5.9.1使用大漠插件(COM组件)
- WDK/DDK USBVIEW 源码 VC2010编译环境 内含
- 使用libxl库读取excel文件
- vc助手for vs2013
- win32画图程序 可保存bmp 截图
- VA西红柿试用信息清除器.rar
- 基于maven+springmvc+spring+mybatis对员工信
- OpenGL三维图形系统开发与实用技术.
- springMVC+spring+Hibernate框架
- jeesite4 最新框架
- 播放mp4视频,有声音无图像,AVC(H
- springmvc与mybatis整合对数据库的增删改
- win10 hadoop-3.1.1-winutils-master hadoop.dllw
- Effective+C中文版第三版+高清PDF
- SpringMVC + Spring + SpringData\\JPA 整合Dem
- springmvc+spring+mybatis
- vs2017编译发布期货策略程序化自动交
- 横版闯关类型游戏VC
- api-ms-win-crt-runtime-|1-1-0.dll和vc_redist.
- SpringMVC +Mybatis完整
-
基于Qt封装minibl
ink库-支持mingw和vc - Ehlib v6.3.184 VCL D7-X6 Full Source
- STM32 WinUSB
- 基于OpenGL的 虚拟漫游
- springmvc代理经销商管理系统
- 编写一个Windows应用程序,要求在窗口
- VC椭圆旋转
- 基于SpringMVC+Maven开发网上书城系统
- 完整代码!扫雷游戏,vs2010
评论
共有 条评论