|
[cpp] view plain copy
- inline Bitmap*
- Bitmap::Clone(
- IN REAL x,
- IN REAL y,
- IN REAL width,
- IN REAL height,
- IN PixelFormat format
- )
- {
PixelFormatIndexed 该像素数据包含颜色索引值,这意味着这些值是系统颜色表中颜色的索引,而不是单个颜色值。 PixelFormatGdi 像素数据包含 GDI 颜色。 PixelFormatAlpha 像素数据包含没有进行过自左乘的 alpha 值。 PixelFormatPAlpha 像素格式包含自左乘的 alpha 值。 PixelFormatExtended 保留。 PixelFormatCanonical 默认像素格式,每像素 32 位。 此格式指定 24 位颜色深度和一个 8 位 alpha 通道。 PixelFormatUndefined 未定义像素格式。 PixelFormatDontCare 没有指定像素格式。 PixelFormat1bppIndexed 指定像素格式为每像素 1 位,并指定它使用索引颜色。 因此颜色表中有两种颜色。 PixelFormat4bppIndexed 指定格式为每像素 4 位而且已创建索引。 PixelFormat8bppIndexed 指定格式为每像素 8 位而且已创建索引。 因此颜色表中有 256 种颜色。 PixelFormat16bppGrayScale 像素格式为每像素 16 位。 该颜色信息指定 65536 种灰色调。 PixelFormat16bppRgb555 指定格式为每像素 16 位;红色、绿色和蓝色分量各使用 5 位。 剩余的 1 位未使用。 Pixel Format16bppRgb565 指定格式为每像素 16 位;红色分量使用 5 位,绿色分量使用 6 位,蓝色分量使用 5 位。 PixelFormat16bppArgb1555 像素格式为每像素 16 位。 该颜色信息指定 32,768 种色调,其中 5 位为红色,5 位为绿色,5 位为蓝色,1 位为 alpha。 PixelFormat24bppRgb 指定格式为每像素 24 位;红色、绿色和蓝色分量各使用 8 位。 Pixel Format32bppRgb 指定格式为每像素 32 位;红色、绿色和蓝色分量各使用 8 位。 剩余的 8 位未使用。 PixeltFormat32bppArgb 指定格式为每像素 32 位;alpha、红色、绿色和蓝色分量各使用 8 位。 PixeltFormat32bppPArgb 指定格式为每像素 32 位;alpha、红色、绿色和蓝色分量各使用 8 位。 根据 alpha 分量,对红色、绿色和蓝色分量进行自左乘。 Pixel Format48bppRgb 指定格式为每像素 48 位;红色、绿色和蓝色分量各使用 16 位。 PixeltFormat64bppArgb 指定格式为每像素 64 位;alpha、红色、绿色和蓝色分量各使用 16 位。 PixelFormat64bppPArgb 指定格式为每像素 64 位;alpha、红色、绿色和蓝色分量各使用 16 位。 根据 alpha 分量,对红色、绿色和蓝色分量进行自左乘。 Max 此枚举的最大值。
示例代码:
[cpp] view plain copy
- Bitmap orgpic(_T("D:\\1.PNG")) ;
- Graphics g(GetDC()->GetSafeHdc()) ;
-
- Bitmap *despic = orgpic.Clone(0, 0, orgpic.GetWidth(), orgpic.GetHeight()/2, PixelFormatDontCare) ;
- g.DrawImage(despic, 0, 0) ;
- delete despic ;
创建此 Image 的一个精确副本, 图片不会失真.具体参看http://msdn.microsoft.com/zh-cn/library/system.drawing.imaging.pixelformat.aspx#Y101
|