作者leicheong (睡魔)
看板Programming
标题Re: [问题] VB6-照片转参数
时间Sat Jul 21 18:43:42 2007
※ 引述《CuckooBoy (阿书)》之铭言:
: ※ 引述《leicheong (睡魔)》之铭言:
: : vb6要做到这种事, 你需要用到Win32API中, 关於GDIPlus的部份.
: : 请把PictureBox的hWnd和hDC值喂给需要hwnd和hdc的地方,
: : PictureBox的Image的Handle值喂给需要hBitmap的地方. 例如:
: : Private Declare Function GetPixel Lib "gdi32.dll" (ByVal hdc As Long, ByVal x
: : As Long, ByVal y As Long) As Long
: : Long pix00 = GetPixel(Picture1.Hdc, 0, 0);
: : 至於怎样把ARGB其4个8 byte的值由32-bit integer中分离出来就要自己
: : 想办法了.
: 感谢
: 刚试了一下,是我要的
: 不过有个疑问
: 颜色不是会有RGB XXX,XXX,XXX
: 为什麽得到的都是一个值
: 譬如 : 255 有时又65280
: 255 因为我放红色 , 65280就不知道为何跑出这麽大的数字
: 蓝色跟绿色也应该不是这数字吧?
: 不能一次印三个值吗?
: SORRY!我影像处理与VB底子不够好....
: 可否请大大指点一下
: 感恩
那API传回的是unsigned int32, VB6不支援unsigned long所以要点技巧.
要速度的话需要用到bitwise arithmatics, 不过不要求速度的话可以
先把它转成Hex string (也就是用Hex$()) 再在後面补零至 6 个字元.
Red是最後两个字元. (可以观察 RGB(255, 0, 0) = 255)
Green是中间两个. (RGB(0, 255, 0) = 65280)
Blue是开始两个 (RGB(0, 0, 255) = 16711680)
Alpha值好像被忽略了......
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 58.152.218.98
1F:→ leicheong:对了... OpenGL中好像有说Windows 58.152.218.98 07/21 18:45
2F:→ leicheong:palette是RGBA的... 58.152.218.98 07/21 18:46