2016-06-23 1 views
1

전화 번호부 역할을하는 C#의 Windows 콘솔 응용 프로그램이 있습니다. 나는 응용 프로그램 등이 하나의 메뉴 아이콘을 설정하는 것입니다 라인에서 누락 지침 오류를 받고 있어요 :.ToBitmap : 'Using Directive'또는 'Assembly Reference'가 없습니다.

cmsProgramMenu.Items.Add("&Settings", Properties.Resources.phone_receiver.ToBitmap(), OnSettings_Click); 

전체 오류가 'object' does not contain a definition for 'ToBitmap' and no extension method 'ToBitmap' accepting a first argument of type 'object' could be found (are you missing a using directive or assembly reference?)입니다.

나는 온라인에서 주위를 돌았으며 제안 된 모든 지시어는 이미 내 코드에 포함되어 있지만 오류는 계속 발생합니다. 이것들은 제가 갖고있는 것들입니다 :

using System; 
using System.Collections.Generic; 
using System.Drawing; 
using System.Linq; 
using System.Net; 
using System.Net.Sockets; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.Configuration; 
using System.Data; 
using System.Windows.Media.Imaging; 

또 다른 것이 있습니까? 또는 이미지를 비트 맵으로 변환하는 또 다른 방법이 있습니까? 난 비주얼 스튜디오 2015

+0

나는이 질문을 완전히 이해하지 못한다고 인정하지만, 혹시'ToBitmap'의 끝 부분에'()'이 필요할 경우가 있습니까? – adv12

+0

사과드립니다. 코드에 이미 나와 있습니다 만, 나는 (어쨌든?) 그것을 복사하지 않은 것 같습니다. 괄호를 추가한다고해서 문제가 해결되는 것은 아니지만이를 지적 해 주셔서 감사합니다. – AxxieD

+1

좋아요, 콘솔 앱이라서'System.Drawing.dll'에 대한 참조를 추가하지 않았을 가능성이 있습니까? Windows Forms 프로젝트의 경우 VS가이 참조를 자동으로 추가하지만 콘솔 프로젝트에는 자동으로 추가하지 않습니다. – adv12

답변

2

Properties.Resources.phone_receiverObject이고 오류 메시지에 ObjectToBitmap이라는 메서드가 없다는 것이 문제입니다. 당신이 (당신의 코드는이 제안하는) 즉이 Icon 확신하는 경우에 당신은 다음과 같은 작업을 수행 할 수

((Icon)Properties.Resources.phone_receiver).ToBitmap() 

을이 명시 적으로 IconProperties.Resources.phone_receiver 캐스트 다음 컴파일러는 ToBitmap 메서드를 호출 할 수 있다는 것을 알고있다 그 위에.

+0

이것은 올바른 경로에있을 수 있지만 여전히 동일한 오류를 표시합니다. – AxxieD

+0

@AxxieD, "여전히 동일한 오류가 발생했습니다"라고 말하면 원래 오류 (지시어/어셈블리 참조를 사용하지 않음) 또는 질문에 편집 한 오류 ('object.ToBitmap()'의 문제)를 의미합니까? 여기에 적어도 두 가지 일이 있다고 생각합니다 ... – adv12

+0

정확히 같은 줄에 정확히 같은 오류 메시지임을 확인합니까? 내가 준 코드 행은'ToBitmap '...'에 대한 정의를 포함하지 않는 오류를 가질 수 없습니다. 왜냐하면 우리는 결코 그 객체를'Object' 유형의 변수에서 호출하려고하지 않기 때문입니다. 나는 오류 메시지가 다른 것 (즉, 캐스팅 할 수 없다) 또는 그 다른 장소에서 같은 오류가 있다고 믿는다. (다른 곳에서 똑같은 일을하기 때문에) ... – Chris

0

에서 작업 또는 phone_receiver 이미지

비트 맵 myBitmap = 새 비트 맵 (Properties.Resources.phone_receiver) 인 경우 이런 식으로 뭔가를 시도하고 있습니다; cmsProgramMenu.Items.Add ("& 설정", myBitmap, OnSettings_Click);

+0

이것은 저에게 다음을 제공합니다 :'인자 1 : '객체'를 '문자열'로 변환 할 수 없습니다. – AxxieD

+0

@SamaaliRadouane, 당신은 OP가'OpenCvSharp'를 사용하고 있다고 믿게합니까? – adv12

+0

@AxxieD 익명의 객체를 사용하려고합니다. –

2

아이콘을 자원 창 (프로젝트 등록 정보/자원)에 "아이콘"으로 추가 한 경우 이미 Icon으로 입력됩니다. System.Drawing에 대한 참조로 충분하며 ToBitmap이 IntelliSense에 나타납니다.

리소스를 "이미지"로 추가 한 경우 이미 BitmapToBitmap()을 입력 할 필요가 없습니다.

어떤 종류의 주조도 필요하지 않습니다! 당신은 코드 편집기에서 "phone_receiver"를 통해 후버 경우

Resources selektion


, 툴팁이 표시하고 당신에게 자원의 유형이 표시됩니다 :

   hover the mouse here | 
            V 

enter image description here

+0

아 맞습니다. 아마도 그것이 타입 객체라면 아마도 "other"타입으로 존재할 것입니까? 저는 리소스를 많이 사용하지 않았기 때문에 강력하게 입력 할 수 있다는 사실에 대해 실제로 생각하지 않았습니다. 잠재적으로 근본 원인보다는 오류를 수정하기 만했습니다. – Chris

+1

아이콘 파일을 "기타"로 추가하려고했지만 여전히 아이콘으로 입력되었습니다. 아마도 자원 관리자에게 알려지지 않은 확장자를 가진 파일 만이'object'로 입력 될 것입니다. –