文档章节

GDI+ 学习记录(27): Bitmap

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 446
阅读 11
收藏 0
点赞 0
评论 0
//用 Bitmap 显示图像
var
  g: TGPGraphics;
  bit: TGPBitmap;
begin
  g := TGPGraphics.Create(Canvas.Handle);
  bit := TGPBitmap.Create('c:\temp\x.jpg');

  g.DrawImage(bit, 11, 11); {默认大小竟然和 1:1 不一样, 是不是分辨率的问题?}
  g.DrawImage(bit, 11, 11, bit.GetWidth, bit.GetHeight);         {1:1}
  g.DrawImage(bit, 11, 11, bit.GetWidth*0.5, bit.GetHeight*0.5); {1:2}

  bit.Free;
  g.Free;
end;

 
 
 
 
 

 

 

  
//复制像素 var g: TGPGraphics; bit1,bit2: TGPBitmap; row,column,width,height: Integer; color: TGPColor; begin g := TGPGraphics.Create(Canvas.Handle); bit1 := TGPBitmap.Create('c:\temp\x.jpg'); width := bit1.GetWidth; height := bit1.GetHeight; bit2 := TGPBitmap.Create(width, height); for row := 0 to height - 1 do begin for column := 0 to width - 1 do begin bit1.GetPixel(column, row, color); bit2.SetPixel(column, row, color); end; end; g.DrawImage(bit1, 0, 0, width, height); g.DrawImage(bit2, width, 0, width, height); bit1.Free; bit2.Free; g.Free; end;
//横向翻转 var g: TGPGraphics; bit1,bit2: TGPBitmap; row,column,width,height: Integer; color: TGPColor; begin g := TGPGraphics.Create(Canvas.Handle); bit1 := TGPBitmap.Create('c:\temp\x.jpg'); width := bit1.GetWidth; height := bit1.GetHeight; bit2 := TGPBitmap.Create(width, height); for row := 0 to height - 1 do begin for column := 0 to width - 1 do begin bit1.GetPixel(column, row, color); bit2.SetPixel(width-column, row, color); {width-column} end; end; g.DrawImage(bit1, 0, 0, width, height); g.DrawImage(bit2, width, 0, width, height); bit1.Free; bit2.Free; g.Free; end;
//纵向翻转 var g: TGPGraphics; bit1,bit2: TGPBitmap; row,column,width,height: Integer; color: TGPColor; begin g := TGPGraphics.Create(Canvas.Handle); bit1 := TGPBitmap.Create('c:\temp\x.jpg'); width := bit1.GetWidth; height := bit1.GetHeight; bit2 := TGPBitmap.Create(width, height); for row := 0 to height - 1 do begin for column := 0 to width - 1 do begin bit1.GetPixel(column, row, color); bit2.SetPixel(column, height-row, color); {height-row} end; end; g.DrawImage(bit1, 0, 0, width, height); g.DrawImage(bit2, width, 0, width, height); bit1.Free; bit2.Free; g.Free; end;
//透明度渐变 var g: TGPGraphics; bit1,bit2: TGPBitmap; row,column,width,height: Integer; color: TGPColor; begin g := TGPGraphics.Create(Canvas.Handle); bit1 := TGPBitmap.Create('c:\temp\x.jpg'); width := bit1.GetWidth; height := bit1.GetHeight; bit2 := TGPBitmap.Create(width, height); for row := 0 to height - 1 do begin for column := 0 to width - 1 do begin bit1.GetPixel(column, row, color); color := MakeColor(255 * Column div width, GetRed(color), GetGreen(color), GetBlue(color)); bit2.SetPixel(column, row, color); end; end; g.DrawImage(bit1, 0, 0, width, height); g.DrawImage(bit2, width, 0, width, height); bit1.Free; bit2.Free; g.Free; end;
//显示 ico 图标 var g : TGPGraphics; bit: TGPBitmap; ico: HICON; begin g := TGPGraphics.Create(Canvas.Handle); ico := LoadIcon(0, IDI_QUESTION); bit:= TGPBitmap.Create(ico); g.DrawImage(bit, 10, 10); bit.Free; g.Free; end;

本文转载自:http://www.cnblogs.com/del/archive/2007/12/27/1017608.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
在.net中使用GDI+来提高gif图片的保存画质

//本文章有www.blue1000.com翻译,原文地址http://codebetter.com/blogs/brendan.tompkins/archive/2004/01/26/6103.aspx //尊重他人劳动成果,转载请注明出处。 写程序的时候经常用到gdi+,...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

C#和C++混合编程

调用简单的C++函数 要在C#代码中调用C++函数,大体的思路是这样的:首先将C++函数写成DLL形式的库,然后在C#中导入DLL中的函数进行调用。具体的代码类似这样: C++代码: C#代码: (导入函数...

moki_oschina ⋅ 2016/07/06 ⋅ 0

GDI+里面的问题。。。。。。。。。。

error C2248: “Gdiplus::Bitmap::Bitmap”: 无法访问 private 成员(在“Gdiplus::Bitmap”类中声明) 1> c:program filesmicrosoft sdkswindowsv7.0aincludegdiplusheaders.h(630) : 参见“G......

xxdd ⋅ 2013/10/24 ⋅ 0

OpenCV用GDI或者GDI+函数对IplImage图像处理

(1 )IplImage -> Bitmap and Bitmap -> IplImage IplImage *img ;Bitmap bitmap( 20 ,20 ,PixelFormat24bppRGB ) ;Graphics pGra( & bitmap) ;HDC hdc = pGra ->GetHDC() ;CvImage cvimg ;cv......

moki_oschina ⋅ 2016/04/09 ⋅ 0

DirectDraw 编程指南

译者注:由于最近在学习DirectDraw的东西, 学了快两个星期了吧, 还是收获不少。今天周未闲来无事,实在无聊,总不能老想女朋友吧,呵呵,还是翻译点文章来打发时间。下面所有的DD表示Direc...

长平狐 ⋅ 2012/08/13 ⋅ 0

c#实现简单的手写板功能

在一些输入法程序菜单中经常有手写板功能,这些功能如何实现呢? 最直接的,我们可以使用Windows提供的GDI技术或GDI+技术来实现绘图功能。但是,要实现一个如此简单的涂鸦板,也不是那么容易...

crossmix ⋅ 2015/09/28 ⋅ 0

如何对mfc窗体背景图片的设置

打开vc+的mfc工程,先载入一张图片,ID为IDB_BITMAP2 TestDlg.h中: CBrush m_brBk;//在public中定义 TestDlg.cpp中: 在初始化函数OnInitDialog()中加入: BOOL CTestDlg::OnInitDialog() { C...

crossmix ⋅ 2015/10/07 ⋅ 0

WinForm自动化测试工具开发札记(5)使用.NET Framework 2.0 新功能抓屏

花絮 上火了,眼睛疼ing...滴了眼药...看你还敢疼的! 这两天一直在攻克抓屏这一关.手头有几本书,还有网上的一些例子,都是使用Win32 API的BitBlt函数.大同小异.今天在看.NET Framework 2.0的类...

余二五 ⋅ 2017/11/14 ⋅ 0

GDI绘图方法的初步分析

GDI绘图方法的初步分析 此文仅对用GDI绘图进行探讨,不包括其它如DirectDraw、OpenGL等方法。 一、利用设备文本(DC)进行贴图操作针对的图形对象是DDB位图,即HBITMAP句柄 二、贴图操作是只能...

ryany ⋅ 2011/03/22 ⋅ 0

使用不安全代码将 Bitmap 位图转为 WPF 的 ImageSource 以获得高性能和持续小的内存占用

在 WPF 中将一个现成的 Bitmap 位图转换成 ImageSource 用于显示一个麻烦的事儿,因为 WPF 并没有提供多少可以转过来的方法。不过产生 Bitmap 来源却非常多,比如屏幕截图、GDI 图、数组或其...

WPwalter ⋅ 2017/11/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

对于程序员的招聘问题,作为软件人的一些吐槽和建议

作为软件人,找工作有时候似乎挺苦逼的。 说真的,让我去掉前面这句中“似乎”二字吧。就是苦逼!很多人都曾抱怨处在招聘的一方很糟糕——我们没有任何可靠的方式来甄别会写代码并且写得好的...

老道士 ⋅ 29分钟前 ⋅ 0

HDFS原理学习

一、概述 1、 Hadoop整合了众多的文件系统,首先提供了一个高层的文件系统抽象org.apache.hadoop.fs.FileSystem。然后有各个文件系统的实现类。 2、Hadoop是JAVA编写的,不同文件系统之间的交...

cjxcloud ⋅ 33分钟前 ⋅ 0

Linux下MySQL表名不区分大小写的设置方法(抄袭别人的)

Linux下MySQL表名不区分大小写的设置方法 MySQL表名不区分大小写的设置方法 在用centox安装mysql后,把项目的数据库移植了过去,发现一些表的数据查不到,排查了一下问题,最后发现是表名的大...

随风而浮沉 ⋅ 38分钟前 ⋅ 0

ubuntu下安装宋体simsun

sudo cp simsun.ttc /usr/share/fonts cd /usr/share/fonts sudo chmod 644 simsun.ttc 更新字体缓存: 代码: sudo mkfontscale 代码: sudo mkfontdir 代码: sudo fc-cache -fsv 安装chrome扩......

wangxuwei ⋅ 39分钟前 ⋅ 0

利用 ssh 传输文件

Linux 下一般可以用 scp 命令通过 ssh 传送文件: #把服务器上的 /home/user/a.txt 发送到本机的 /var/www/local_dir 目录下scp username@servername:/home/user/a.txt /var/www/local_dir...

大灰狼时间 ⋅ 49分钟前 ⋅ 0

web3j教程:android和java程序员如何使用web3j开发区块链以太坊

如何使用web3j为Java应用或Android App增加以太坊区块链支持,本教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,交易与状态、智能合约开发与交互、过滤...

智能合约 ⋅ 今天 ⋅ 0

web3j开发java或android以太坊智能合约快速入门

web3j简介 web3j是一个轻量级、高度模块化、响应式、类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成。 可以通过它进行以太坊区块链...

笔阁 ⋅ 今天 ⋅ 0

一起读书《深入浅出nodejs》-异步I/O

异步I/O “异步”这个名词其实很早就诞生了,但它大规模流行却是在Web 2.0浪潮中,它伴随着AJAX的第一个A(Asynchronous)席卷了Web。 为什么要异步I/O 关于异步I/O为何在Node里如此重要,这与...

小草先森 ⋅ 今天 ⋅ 0

JVM各种问题

1、如果启动什么都不设,会怎样? 先来看一个命令 [root@localhost bin]# java -XX:+PrintCommandLineFlags -version -XX:InitialHeapSize=29899008 -XX:MaxHeapSize=478384128 -XX:+PrintCo......

算法之名 ⋅ 今天 ⋅ 0

SAS笔记-宏2

宏是一种文本,一般来说其编译是在程序执行之前。 宏变量的创建 %let语句 %let macro_variables = text; %let是常见的宏变量建立方式,其编译就在执行前。如下例中,想要宏变量test等于数据集...

tonorth123 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部