お世話になります。
C#を勉強中なのですがビルド後実行すると以下のようなエラーが出力されてしまいます。
エラーの内容
System.InvalidCastException: '型 'System.Drawing.Color' のオブジェクトを型 'System.IConvertible' にキャストできません。'
---処理(C#)---
MapWinGIS.Shapefile sf;
色々な処理
sf.Labels.FontColor =
Color.FromArgb(Convert.ToInt32(Color.Red.R),Convert.ToInt32(Color.Red.G),Convert.ToInt32(Color.Red.B)));
---END---
この処理はサンプルに記述されていてVB.NETでもC#でも動作すると記述があります。
VBではエラーは出力されず動作は終了します。
----処理(VB)---
Dim sf As MapWinGIS.Shapefile
色々な処理
sf.Labels.FontColor =
Convert.ToUInt32(RGB(Convert.ToInt32(Color.Red.R),Convert.ToInt32(Color.Red.G),Convert.ToInt32(Color.Red.B)))
---END---
何か解決策をご存じの方ご教示いただけないでしょうか?
以上、宜しくお願い申し上げます。
C#で以下のようなエラーが出るのですが対象方法をおしえてください。
Re: C#で以下のようなエラーが出るのですが対象方法をおしえてください。
非標準のライブラリが関係するならば,そのライブラリの名前と,そのライブラリの公式サイトへのリンクくらいは張って欲しいのですが……。
今回の場合,sf.Lbaels.FontColorプロパティはuint型であるため,System.Dawing.Colorから直接は変換できないためにエラーになっています。
ToArgbメソッドでARGBの値を取得し,Aの値を抜くために0x00FFFFFFと論理積と取って代入すればよいでしょう。 なお,Visual Basicの方のコードにおいては,Microsoft.VisualBasic.Information.RGBメソッドを使っているのでエラーにはならないですが,
そもそもMicrosoft.VisualBasic名前空間はVB独自機能や互換性のための名前空間でもあるので,あまり使わない事が望ましいかと思います。
オフトピック
とりあえず,The MapWindow projectと仮定
ToArgbメソッドでARGBの値を取得し,Aの値を抜くために0x00FFFFFFと論理積と取って代入すればよいでしょう。 なお,Visual Basicの方のコードにおいては,Microsoft.VisualBasic.Information.RGBメソッドを使っているのでエラーにはならないですが,
そもそもMicrosoft.VisualBasic名前空間はVB独自機能や互換性のための名前空間でもあるので,あまり使わない事が望ましいかと思います。
Re: C#で以下のようなエラーが出るのですが対象方法をおしえてください。
Yuo様、ありがとうございます。
>とりあえず,The MapWindow projectと仮定
申し訳ありません、おっしゃる通りMapwinGIsです。
ライブラリの名:winmapgis、ライブラリの公式サイト:http://www.mapwindow.org/
それとC#のソースを記述ミスしておりました。
sf.Labels.FontColor =
Convert.ToUInt32(Color.FromArgb(Convert.ToInt32(Color.Red.R),
Convert.ToInt32(Color.Red.G),
Convert.ToInt32(Color.Red.B)));
上記の処理で実行すると
System.InvalidCastException: '型 'System.Drawing.Color' のオブジェクトを型 'System.IConvertible' にキャストできません。'
と出力されます。
そこれご教示いただきました以下のコードで試してみたらエラーが無くなりました。
sf.Labels.FontColor = (uint)(Color.Red.ToArgb() & 0x00FF0000);
どうもありがとうございました。
>とりあえず,The MapWindow projectと仮定
申し訳ありません、おっしゃる通りMapwinGIsです。
ライブラリの名:winmapgis、ライブラリの公式サイト:http://www.mapwindow.org/
それとC#のソースを記述ミスしておりました。
sf.Labels.FontColor =
Convert.ToUInt32(Color.FromArgb(Convert.ToInt32(Color.Red.R),
Convert.ToInt32(Color.Red.G),
Convert.ToInt32(Color.Red.B)));
上記の処理で実行すると
System.InvalidCastException: '型 'System.Drawing.Color' のオブジェクトを型 'System.IConvertible' にキャストできません。'
と出力されます。
そこれご教示いただきました以下のコードで試してみたらエラーが無くなりました。
sf.Labels.FontColor = (uint)(Color.Red.ToArgb() & 0x00FF0000);
どうもありがとうございました。