| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 662 人关注过本帖
标题:请教下SetPixel 函数中的htc(设备场景的句柄)怎么找?
只看楼主 加入收藏
atan2013
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-8-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
请教下SetPixel 函数中的htc(设备场景的句柄)怎么找?
VB声明
Declare Function SetPixel Lib "gdi32" Alias "SetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
这里的hdc,请教下,我VB基础差。
当打开一张图片Open "C:\1.bmp" For Binary As #1后,接下来要修改图片中某个点的颜色,应该用到这个SetPixel命令了,请教下这时的hdc怎么写?
搜索更多相关主题的帖子: 图片 
2014-01-14 20:46
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:10 
hdc是图形设备句柄,一般图形控件或窗体有这个句柄,可被图形函数使用。open函数会获得一个文件设备句柄,这个句柄只能被文件类函数使用,不能被图像类函数使用。
2014-01-14 22:20
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
收藏
得分:10 
要修改图片中某个点的颜色,Open后,接下来直接修改数据。
SetPixel用来设置图形控件某个点的颜色。

无知
2014-01-14 22:48
atan2013
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-8-2
收藏
得分:0 
回复 3楼 Artless
能给个open后怎么改颜色的源码吗?查了好久查不到。(包括修改后怎么保存的源码)

[ 本帖最后由 atan2013 于 2014-1-15 19:20 编辑 ]
2014-01-15 19:19
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:0 
不用open的行不,用文件的方式必须知道bmp文件结构,还需要知道哈弗曼压缩编码的压缩还原算法,相当麻烦的。用图片控件很容易修改存储bmp格式图片。
2014-01-16 16:10
atan2013
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-8-2
收藏
得分:0 
回复 5楼 lowxiong
Private Function FindByte(ByVal LineWidth As Long, ByVal LineCount As Long, ByVal x As Long, ByVal y As Long) As Long
    FindByte = 55 + (LineCount - y - 1) * LineWidth + 3 * x
End Function
Public Function getclo(picpic As String, x As Integer, y As Integer) '图像路劲,横坐标,纵坐标
    Dim BMPWidth As Long
    Dim BMPHeight As Long
    Dim LineWidth As Long
    Dim ArrByte(0 To 3) As Byte
    Dim R As Integer
    Dim G As Integer
    Dim B As Integer
    Open picpic For Binary As #1
    Get #1, 19, ArrByte
    BMPWidth = ArrByte(3) * 256 ^ 3 + ArrByte(2) * 256 ^ 2 + ArrByte(1) * 256 + ArrByte(0) '图像宽
    Get #1, 23, ArrByte
    BMPHeight = ArrByte(3) * 256 ^ 3 + ArrByte(2) * 256 ^ 2 + ArrByte(1) * 256 + ArrByte(0) '图像高
    Select Case (BMPWidth * 3) Mod 4 'BMP图要求每行字节数为4的倍数,不够则填充1-3个无用字节
    Case 0
        LineWidth = BMPWidth * 3
    Case 1
        LineWidth = BMPWidth * 3 + 3
    Case 2
        LineWidth = BMPWidth * 3 + 2
    Case 3
        LineWidth = BMPWidth * 3 + 1
    End Select
    Get #1, FindByte(LineWidth, BMPHeight, x, y), ArrByte '此为求 (x,y)点颜色分量
    R = ArrByte(2)
    G = ArrByte(1)
    B = ArrByte(0)
    Close #1
    getclo = Hex(RGB(R, G, B))
End Function
这是网上整理来的读取硬盘图片某个点颜色的源码,因为想要做成插件调用,所以不能调用图形控件,求改色和保存修改内容的源码。
2014-01-16 16:23
快速回复:请教下SetPixel 函数中的htc(设备场景的句柄)怎么找?
数据加载中...
 
   



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

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