C#获取屏幕指定像素颜色值

C#获取屏幕指定像素颜色值,第1张

可以利用原生态的API方法来实现,通过GetDC获取屏幕DC,然后通过GetPixel获取点的颜色。代码如下:

/// <summary>

/// 获取指定窗口的设备场景

/// </summary>

/// <param name="hwnd">将获取其设备场景的窗口的句柄。若为0,则要获取整个屏幕的DC</param>

/// <returns>指定窗口的设备场景句柄,出错则为0</returns>

[DllImport("user32dll")]

public static extern IntPtr GetDC(IntPtr hwnd);

/// <summary>

/// 释放由调用GetDC函数获取的指定设备场景

/// </summary>

/// <param name="hwnd">要释放的设备场景相关的窗口句柄</param>

/// <param name="hdc">要释放的设备场景句柄</param>

/// <returns>执行成功为1,否则为0</returns>

[DllImport("user32dll")]

public static extern Int32 ReleaseDC(IntPtr hwnd, IntPtr hdc);

/// <summary>

/// 在指定的设备场景中取得一个像素的RGB值

/// </summary>

/// <param name="hdc">一个设备场景的句柄</param>

/// <param name="nXPos">逻辑坐标中要检查的横坐标</param>

/// <param name="nYPos">逻辑坐标中要检查的纵坐标</param>

/// <returns>指定点的颜色</returns>

[DllImport("gdi32dll")]

public static extern uint GetPixel(IntPtr hdc, int nXPos, int nYPos);

使用:

public Color GetColor(int x, int y)

{

   IntPtr hdc = GetDC(IntPtrZero); uint pixel = GetPixel(hdc, x, y);

   ReleaseDC(IntPtrZero, hdc);

   Color color = ColorFromArgb((int)(pixel & 0x000000FF), (int)(pixel & 0x0000FF00) >> 8, (int)(pixel & 0x00FF0000) >> 16);

   return color;

}

CODE SEGMENT

ASSUME CS:CODE

MSG DB 'hello I am 720'

N EQU $-MSG

START: PUSH CS

POP DS

PUSH CS

POP ES

MOV AH,2

MOV DH,12

MOV DL,37

INT 10H

MOV CX,N

LEA SI,MSG

@1:

PUSH CX

MOV AH,9

MOV AL,[SI]

MOV BL,0CFH

MOV CX,1

INT 10H

INC SI

MOV AH,3

INT 10H

MOV AH,2

INC DL

INT 10H

POP CX

LOOP @1

MOV AH,4CH

INT 21H

CODE ENDS

END START

DATA SEGMENT

DB 41H, 0CAH, 42H, 0CAH, 43H, 0CAH, 44H, 0CAH

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START:

MOV AX, DATA

MOV DS, AX

MOV AX, 0B800H

MOV ES, AX

MOV DI, (12 160 + 2 30) ;在第12行、30列显示

MOV BX, 0

MOV CX, 4

S:

MOV AX, [BX]

MOV ES:[DI], AX

ADD DI, 2

ADD BX, 2

LOOP S

;S2: NOP

; JMP SHORT S2

MOV AX, 4C00H

INT 21H

CODE ENDS

END START

以上就是关于C#获取屏幕指定像素颜色值全部的内容,包括:C#获取屏幕指定像素颜色值、用汇编语言循环指令在屏幕中间输出红底白字的“hello I am 720"、汇编实现在dos屏幕上显示带颜色的ABCD,错在哪里怎么没有字显示出来等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9431276.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存