2009-02-03 2 views
3

VB.NET 2005의 Windows Form에서 작업 중이며 이미지가있는 단추가 필요합니다 (저는 바닐라 System.Windows.Forms.Button에 대해 이야기하고 있습니다). 모든 것을 원하는 방식으로 설정했지만 이미지가 버튼에 너무 낮게 표시되어 아이콘 하단이 버튼 하단에 거의 표시되고 이미지 위에 많은 공간이 있습니다.
Button Screenshot http://www.freeimagehosting.net/uploads/b28a5c63b8.jpg버튼 이미지가 버튼 상단에서 너무 멀리 떨어져 있습니다. 단추의 아래쪽에 너무 가깝습니다.

이 아이콘의 모서리 버튼의 하단에 브러시 업하는 방법을 알아보십시오 : 여기

은 스크린 샷입니까?

내 버튼의 높이가 23 픽셀이고 이미지 크기가 16 x 16 아이콘입니다 (버튼의 Image 속성에 할당 할 수 있도록 비트 맵으로 변환 됨).

버튼의 Margin.All 속성을 0으로 설정하고 Padding.All 속성이 0인지 확인했습니다. 또한 버튼의 ImageAlign을 TopLeft, MiddleLeft 및 BottomLeft로 변경하려고했지만 그 중 아무 것도 변경하지 않았습니다. 설정이 영향을 미치는 것 같습니다.

버튼의 위쪽과 아래쪽 가장자리에서 같은 거리에 이미지를 배치하는 방법을 아는 사람이 있습니까? 필요한 경우 버튼이나 이미지의 크기를 조정할 수 있지만 원하는 크기로되어 있으므로 가능한 경우 해당 방법을 유지하고 싶습니다.

답변

2

일반적으로, 우리는 (예를 들어, 오른쪽의 이미지) 다음 속성을 설정합니다 :

ImageAlign: MiddleRight 
TextAlign: MiddleLeft 

당신은 비슷한 방식으로 텍스트와 이미지 모두를 정렬 할 수 있습니다. 그 외에는 BackgroundImage 속성이 아닌 Image 속성을 설정하고 아이콘을 일반 비트 맵으로 올바르게 변환하고 있는지 확인하십시오. 일반 비트 맵 파일을 사용해 보셨습니까?

+0

ImageImage가 아닌 Image를 사용하고 있습니다. (작동하는지 보려면 BackGroundImage를 시도했지만하지는 않았습니다.) 네이티브 .NET Icon.ToBitmap() 메서드를 사용하여 변환합니다. 나는 그 평범한 비트 맵을 시도해 보겠다. – Patrick

0

그냥 질문 : 비트 맵에 메모 이미지의 맨 위에 정보가 없다는 긍정적입니까?

+0

좋은 지적이지만, 나는 그것이 문제라고 생각하지 않는다. 다른 이미지가있는이 버튼 바로 옆에는 7 개의 다른 버튼이 있으며 모두 동일한 문제가 있습니다. 아이콘이 비트 맵으로 변환되었으므로 변환 과정에서 정보가 이미지의 맨 위에 추가됩니다. – Patrick

7

), 즉 코드가 완벽하게 될 수있는 경우라면 나는 ... :)

작물이 바로 포토샵에서 보니 라이브 코드의 잘못된 나온 곳이 한 번 이상 나에게 일이 있었다 나는 비슷한 문제에 직면했다. 나는 정말로 열심히 생각함으로써 해결할 수 있었다. (상황이 좋지 않습니까?)

먼저 ImageAlign은 버튼에서 이미지를 원하는 위치를 의미하지는 않습니다. 이것은 이미지의 어떤 점 (픽셀)을 위치 지정에 사용해야 하는지를 의미합니다. 따라서 "TopLeft"를 선택하면 이미지의 맨 위 왼쪽 픽셀이 버튼에서 수직으로 중앙에 배치됩니다.

ImageAlign이 "center"로 세로로 설정되고 크기가 짝수 픽셀 인 이미지의 단추가있을 때 문제가 발생합니다. 귀하의 이미지는 16x16 픽셀입니다 - 16은 짝수입니다. 가운데 픽셀은 이론적으로 픽셀 8과 픽셀 9 사이의 어딘가에 있습니다. 픽셀 8.5가 없으므로 VB는 8로 반올림되므로 픽셀 8을 위치 픽셀로 사용합니다. 이것은 원하지 않는 상단 여백의 근본 원인입니다.

단추의 홀수 픽셀 높이 (23 픽셀)가 실제 중심 픽셀 픽셀 12임을 나타냅니다. VB는 이미지의 가운데 픽셀 (8)을 단추의 중심 픽셀 (12) 위에 놓으려고합니다. 이렇게하면 이미지의 픽셀 중 8 개를 가운데 아래에 배치하고 가운데에 7 개의 픽셀을 배치합니다. 사물을 보아도 1 픽셀의 여백이 이미지 위에 나타납니다.

다음은 해결책입니다. 하단에 추가로 1 행의 픽셀을 추가하여 이미지를 채 웁니다. 이제 이미지의 높이가 홀수 (17 픽셀)가되어 이미지를 단추의 가운데 픽셀과 완벽하게 일렬로 정렬 할 수있는 실제 중심 픽셀로 지정합니다.

그래서 내가 직접 문제를 해결했습니다. 그러나, 더 간단한 솔루션이 나에게 일어났습니다. 이미지에 1px의 아래쪽 여백을 할당하여 동일한 결과를 얻을 수도 있습니다. 이 솔루션을 테스트하지는 않았지만 이론적으로는 첫 번째 솔루션과 같습니다.

추가 참고 사항 : EVEN 차원의 두 개체는 이론적으로 완벽하게 가운데 정렬 할 수 있어야합니다. 그러나 이상하게도 버튼과 이미지 둘 다 짝수 인 경우에도 정렬 문제가 발생합니다. (분명히 컴파일러는 다른 컨트롤 대 하나의 컨트롤의 중심 픽셀을 결정하는 방식이 일관되지 않습니다.) 그럼에도 불구하고이 경우에도 동일한 솔루션이 적용됩니다.

+3

패딩 값을 "0; 0; 1; 1"로 설정하면 도움이됩니다. 해결책과 설명에 감사드립니다! – Codeguard

+0

ImageAlign = ContentAlignment.MiddleCenter; – Engineer

관련 문제