2012-03-12 4 views
3

저는 WP7 개발에 익숙하지 않고 이미지에 텍스트를 쓰는 방법을 알고 싶습니다.WP7의 이미지에 텍스트 쓰기

먼저 그렇게 할 수 있습니까?

아래 그림과 같이 우리가 이미지에 텍스트를 쓸 수 있습니다 GDI와 같이

:
Dim pth As New GraphicsPath() 
pth.AddString(txtSample.Text, New FontFamily(DropFont.SelectedValue), 0, Integer.Parse(DropFontSize.SelectedValue), New Point(left, top), StringFormat.GenericTypographic) 

하지만 GDI 내가이 작업을 수행 할 수있는 방법을 supported.So되지 않는다는 것을 알게으로 WP7에서

?

편집 :

나는 pictures hub에서 이미지를 선택하거나 camera를 사용하여 사진을 촬영하고 이미지 컨트롤에 표시하고 일부 텍스트를 작성하고 다른 이름으로 다시 저장해야합니다.

모든 의견을 환영합니다.

+0

텍스트로 이미지를 오버레이하거나 이미지에 텍스트를 쓰고 저장하려고합니다 (예 : 장치에 저장된 새 Jpeg를 만드는 등 ...) –

+0

@ willmel- 중첩하지 않음 작성해야 함 텍스트 – coder

+0

http://stackoverflow.com/questions/7481436/drawstring-on-wp7 –

답변

4

WriteableBitmap을 가져와 조작 할 수 있어야합니다.

Render 메서드를 사용하여 UIElement을 추가하거나 Pixels 배열을 사용하여 픽셀을 직접 조작 할 수 있습니다.

당신은 아마 단지 비트 맵에 TextBlock 요소를 추가해야하지만 픽셀 조작에 대한 호기심이 있다면 여기에 수행하는 방법이다 :

I 픽셀 조작 만 경험이 있습니다. 이것은 완전히 단순하지는 않지만 y * width + x을 변환하여 1 차원 배열의 픽셀 (x, y)에 액세스합니다.

값은 argb32이라는 형식, 즉 알파 채널 (불투명도), 빨강, 녹색 및 파랑 값입니다. 일반 Color과 argb32 간의 번역 :

int ColorToInt(Color c) 
    { 
     var argb32 = c.A << 24 | c.R << 16 | c.G << 8 | c.B; 
     return argb32; 
    } 

    Color IntToColor(int argb32) 
    { 
     const int mask = 0x000000FF; 
     byte a, r, g, b; 
     a = (byte)((argb32 >> 24) & mask); 
     r = (byte)((argb32 >> 16) & mask); 
     g = (byte)((argb32 >> 8) & mask); 
     b = (byte)(argb32 & mask); 
     return Color.FromArgb(a, r, g, b); 
    } 
2

왜 이미지에 삽입해야합니까?

당신은 단순히 같은 그리드에 이미지 및 텍스트를 배치 할 수 있습니다 : 당신이 나중에 사용할 수 있도록 이미지를 수정할 필요없이 텍스트와 이미지를 오버레이합니다

<grid> 
    <image source="YourImageSource"/> 
    <TextBlock Text="Your Text Here"/> 
</grid> 

. 또한 바인딩을 통해 자유롭게 다른 것을 바인딩하고 독립적으로 스위치를 전환 할 수 있습니다.

XNA를 사용하는 경우 faester와 동일한 방법으로 Texture2D의 픽셀을 조작하여이 작업을 수행 할 수도 있습니다.

+0

@ Runewake2- 전에이 답변을 보았습니다.하지만 텍스트 만 표시하고 싶지 않은 것은 좋지 않습니다. 텍스트의 위치를 ​​변경하는 것과 같은 조작. 그리드 렛트가 나의 목적에 적합하다. – coder

+0

@DotNetter 텍스트의 위치를 ​​변경해야하는 경우 TextBlock의 여백을 원하는 간격 띄우기 (그리드 위치 기준)로 설정하면됩니다.이것은 당신에게 텍스트의 자유를 줄 것입니다. 또한 텍스트를 이동하려는 경우 이미지를 재생성하는 속도가 느리므로 이미지에 텍스트를 포함하는 다른 아이디어를 사용하고 싶지는 않습니다. 정말 느립니다. 간략하게하기 위해 +1은 – Runewake2

+0

입니다. – Robaticus