나는 이모티콘을 표시하는 richtextbox에서 텍스트를 복사 할 수있는 좋은 방법을 찾고 있습니다. 채팅을 선택할 수있는 skype을 생각하면 이모티콘 이미지가 복사되어 텍스트 표현 (스마일 이미지 : :) 등으로 변환됩니다. MVVM 패턴을 사용하고 있습니다.wpf의 이미지를 보여주는 richtextbox에서 이모티콘 "텍스트"복사하기
5
A
답변
4
텍스트에 대한 RichTextBox 내용의 구문 분석을 구성하는 방법을 모르겠습니다. 아래는 XML linq를 사용하는 한 가지 방법입니다. 정규 표현식은 더 잘 작동하지만 나는 그것들을 빨아 먹는다. ConvertToText 메서드를 전달합니다. RichTextBox의 FLowDocument입니다.
private static string ConvertToText(FlowDocument flowDocument)
{
TextRange textRangeOriginal =
new TextRange(flowDocument.ContentStart, flowDocument.ContentEnd);
string xamlString;
using (MemoryStream memoryStreamOriginal = new MemoryStream())
{
textRangeOriginal.Save(memoryStreamOriginal, DataFormats.Xaml);
xamlString = ASCIIEncoding.Default.GetString(memoryStreamOriginal.ToArray());
}
XElement root = XElement.Parse(xamlString);
IEnumerable<XElement> smilies =
from element in root.Descendants()
where (string)element.Attribute("FontFamily") == "Wingdings" && IsSmiley(element.Value)
select element;
foreach (XElement element in smilies.ToList())
{
XElement textSmiley = new XElement(element.Name.Namespace + "Span",
new XElement(element.Name.Namespace + "Run", GetTextSmiley(element.Value)));
element.ReplaceWith(textSmiley);
}
using (MemoryStream memoryStreamChanged = new MemoryStream())
{
StreamWriter streamWriter = new StreamWriter(memoryStreamChanged);
streamWriter.Write(root.ToString(SaveOptions.DisableFormatting));
streamWriter.Flush();
FlowDocument flowDocumentChanged = new FlowDocument();
TextRange textRangeChanged =
new TextRange(flowDocument.ContentStart, flowDocument.ContentEnd);
textRangeChanged.Load(memoryStreamChanged, DataFormats.Xaml);
return textRangeChanged.Text;
}
}
private static string GetTextSmiley(string value)
{
switch (value)
{
case "J" :
return ":)";
case "K" :
return ":|";
case "L" :
return ":(";
default :
throw new ArgumentException();
}
}
private static bool IsSmiley(string value)
{
return value == "J" || value == "K" || value == "L";
}
+1
우수 작품! –
+0
감사합니다. 프랭크, 나는 단지 가야만하는 멋진 문제였습니다. –
관련 문제
- 1. WPF의 RichTextBox에서 PDF 파일 열기
- 2. WPF의 RichTextBox에서 내용의 크기가 올바르게 조정되지 않음
- 3. NSTextView의 이모티콘
- 4. Android에서 이모티콘 표시
- 5. wpf의 라벨에 이미지를 추가 하시겠습니까?
- 6. WPF의 DataGrid에있는 DataTable의 레코드를 보여주는 페이지를 만드는 방법은 무엇입니까?
- 7. iphone app 이모티콘
- 8. xcode에 이모티콘 구현
- 9. 푸시 알림 경고의 이모티콘
- 10. sed를 사용하여 이모티콘 필터링
- 11. 버블 채팅 + 이모티콘 + UITableViewCell
- 12. Blackberry : 채팅 응용 프로그램의 이모티콘
- 13. 애플 알림 및 이모티콘 문자
- 14. WPF : RichTextBox에서 이미지 크기 조정 허용
- 15. RichTextBox에서 이미지 제거 (또는 업데이트)
- 16. RichTextBox에서 글꼴 속성 설정
- 17. RichTextBox에서 링크 색상 변경
- 18. RichTextBox에서 텍스트 삭제
- 19. RichTextBox에서 편집 제한
- 20. VC++의 RichTextBox에서 읽기
- 21. RichTextBox에서 선택되는 직사각형 배경색
- 22. RichTextbox에서 NULL 참조 예외
- 23. Silverlight RichTextBox에서 스크롤
- 24. 세 가지 크기의 이미지를 보여주는 jQuery 이미지 갤러리 플러그인
- 25. mvvm에서 이미지를 보여주는 하이퍼 링크 OnmouseOver mvvm light wpf
- 26. WPF의 ImageButton
- 27. 스토어가 오류를 보여주는
- 28. WPF의 TargetInvocationException에서 이미지 업데이트
- 29. WPF의 이미지가 흐릿 해짐
- 30. Silverlight RichTextBox에서 줄 수를 얻으시겠습니까?
현상금에 대한 현상금을 시작하셨습니까? –