:
- 1 : 프로젝트
2 System.Runtime.InteropServices
네임 스페이스를 추가 : 프로젝트에 API
클래스를 추가하고 GetKerningPairs
를 사용하자 메서드 이 함수는 KERNINGPAIR
이라는 구조체를 사용한다는 것을 기억하십시오. 클래스에 정의되어 있는지 확인해야합니다. 그렇지 않으면 컴파일 오류가 발생합니다!
class API
{
[DllImport("gdi32.dll")]
static extern uint GetKerningPairs(IntPtr hdc, uint nNumPairs,
[Out] KERNINGPAIR[] lpkrnpair);
[StructLayout(LayoutKind.Sequential)]
struct KERNINGPAIR
{
public ushort wFirst; // might be better off defined as char
public ushort wSecond; // might be better off defined as char
public int iKernAmount;
public KERNINGPAIR(ushort wFirst, ushort wSecond, int iKernAmount)
{
this.wFirst = wFirst;
this.wSecond = wSecond;
this.iKernAmount = iKernAmount;
}
public override string ToString()
{
return (String.Format("{{First={0}, Second={1}, Amount={2}}}", wFirst, wSecond, iKernAmount));
}
}
}
이제 API
클래스 그 질문은 구체적으로는 .NET을 통해 커닝 쌍을 얻을 수 있는지 여부를 요구하고있다
좋은 물건, 고마워! 나는 이것을 시험해보고 되돌아온 커닝 페어가 정확한지 아닌지 확인합니다. 이 방법을 사용한 경험이 있습니까? – jcvandan
당신은 환영합니다, 나는 두렵습니다. 그러나 제공된 입력이 올바른 형식으로되어 있다면 걱정할 필요가 없습니다. 그리고 http://www.pinvoke.net/은 매우 유용한 웹 사이트입니다. winAPI' – Mehran