2011-02-18 5 views
0

(x, y) 원본 픽셀이 (0,0) 대상 픽셀로 나타나도록 src에서 dest로 (x, y, w, h) 부 직사각형을 붙여 넣기를 원합니다. 나는 과다한 오버로드 중 어느 것이 이것을 하는지를 결정하는 데 어려움을 겪고있다. 지금 내 코드는 분명히 작동하지 않는이, 다음과 같습니다어떤 Gdiplus :: Graphics :: DrawImage 함수를 사용해야합니까?

auto_ptr<Gdiplus::Graphics> g(Gdiplus::Graphics::FromHDC(pDC->GetSafeHdc())); 
g->DrawImage(png, r.top, r.bottom, r.Width(), r.Height()); 
g->Flush(); 

및 (x, y)의 소스 픽셀이 (x, y)를 대상 픽셀로 표시하기 때문에 내가 원하는 반면, 그것은 작동하지 않습니다 그것은 (0,0) 목적지 픽셀로 나타납니다. 원점과 목적지 구형의 사이즈는 같지만, 오프셋 (offset)는 같게하지 않으면 안됩니다.

[편집] 절대로, 내가 필요로하는 오버로드 된 기능을 찾지 못했습니다. 턴에 추가 된 것은 목적지 (x, y)가 앞쪽으로, 그리고 UnitPixel이 끝에 추가해야한다는 것입니다.

auto_ptr<Gdiplus::Graphics> g(Gdiplus::Graphics::FromHDC(pDC->GetSafeHdc())); 
g->DrawImage(png, 0, 0, r.left, r.top, r.Width(), r.Height(), Gdiplus::UnitPixel); 
g->Flush(); 
+0

나는 gdiplus에 대해 잘 모르겠지만 유사한 경우에는 r 대신 png의 너비와 높이를 전달해야한다고 생각합니다. 또한 이미지가 사용 가능한 rect에 맞는지 확인하십시오. – sinek

+0

r의 너비/높이가 png입니다. 붙여 넣기 전에 코드가 완성되었습니다. – sashoalm

+0

제목에서 "해결 된"태그를 제거했습니다. 해결책을 직접 찾았으므로 자신의 질문에 대한 답변으로 게시하고 받아 들여야합니다. 그러면 기본 제공 메커니즘을 사용하여 질문을 표시하는 방식입니다 사이트에서 제공하는 답변. 그렇게하기위한 배지가 있다고 생각합니다. –

답변

0

누구나 작동합니다. 모두 똑같이 작동합니다. 그것들은 대체로 별칭입니다. REAL 실수 [에]

x는 그릴 수있는 에서 대상 사각형의 왼쪽 상단 구석의 x 좌표 지정 : 나는 당신을 추측 하나는한다고 this one 것 사용 이미지. 가 화상을 그리하는 에서 목적지 직사각형의 좌상 구석의 Y 좌표를 지정 [IN] REAL 실수

Y. 호출이되도록

시도 대신 0으로 x와 y 값을 설정하려면 다음

그 외에는
auto_ptr<Gdiplus::Graphics> g(Gdiplus::Graphics::FromHDC(pDC->GetSafeHdc())); 
g->DrawImage(png, 0, 0, r.Width(), r.Height()); 
g->Flush(); 

당신이 "작동하지 않습니다"무엇인지에 더 구체적으로해야 할 것 . 잘못 그렸습니까? 전혀 그려지지 않았습니까? PNG가 제대로로드 되었습니까? 아무 것도 그려지지 않으면 DrawImage에서 올바른 방향으로 가리켜 야 할 반환 값 (Status)을 확인하는 것이 좋습니다.


편집

좋아, 그래서 당신이 SRC로 매핑하지 않으려면 (0, 0)에서 DEST (0, 0) 나는 당신이 대신 this one을 사용할 수있는 것 같아요. -coordinate 소스 이미지의 부분의 왼쪽 상단 모서리의 | 은 [Y X]를 지정하는 REAL 실수 [에] | [Y X] 이것은 당신이

SRC를 결정하게됩니다 그려져있다.

희망이 도움이됩니다.

+0

(x, y) 원본 픽셀이 (x, y) 대상 픽셀로 나타나고 대상 픽셀이 (0,0)으로 나타나기 때문에 작동하지 않습니다. 원점과 목적지 구형의 사이즈는 같지만, 오프셋 (offset)는 같게하지 않으면 안됩니다. – sashoalm

관련 문제