C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: CrystalReport に出力した画像の背景が黒くなる


(過去ログ 56 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■31837 / inTopicNo.1)  CrystalReport に出力した画像の背景が黒くなる
  
□投稿者/ ヒトシ (1回)-(2009/01/29(Thu) 11:50:08)

分類:[VB.NET/VB2005 以降] 

自分なりにいろいろ試してみたのですが、どうしても上手くいかないので質問させていただきます。

環境は以下の通りです。
OS:VISTA
VS:VB.Net2008
CR:.net2008バンドル版
DB:SQLServerCE3.5

http://dobon.net/vb/bbs/log3-14/7983.html
等を参考に、
自動的に電子印を作成し、DBに保存し、
それをクリレポに出力するような処理を作成中です。

DBに保存された画像の背景が白いのは確認出来ているのですが、
クリレポに出力すると何故か背景が黒になってしまいます。
試す中でフォーマットが悪いのかとも思い、
いろんなフォーマットで保存してみましたが、
どのフォーマットで保存しても背景色が黒になってしまいます。

何かヒントでも頂けると幸いです。

画像に問題はないと思っていますが一応画像作成のあたりの処理を添付しておきます。
※問題があるとすればBMPでDBに保存出来ない(DBの列サイズがMAX8000なので)事ぐらいでしょうか、、、


Private Sub Create_Seal()

Dim adpWk As New appworkDataSetTableAdapters.SealTblTableAdapter

Try
' 電子印の検索。存在しない場合のみ作成。
Using conWk As New SqlCeConnection(My.Settings.appworkConnectionString)
conWk.Open()

strSQL = " SELECT COUNT(*) AS CNT"
strSQL += " FROM SealTbl "
strSQL += " WHERE TantoCD = " & mdlcommon.pptSys_LoginID
Dim comWk As New SqlCeCommand(strSQL, conWk)
Dim recWk As SqlCeDataReader = comWk.ExecuteReader

recWk.Read()

If recWk("CNT") > 0 Then
Exit Sub
End If
End Using


'塗りつぶす全体の領域
Dim objRectangle As New Rectangle(0, 0, 60, 60)

'描画領域とグラフィックオブジェクトの作成
Dim bitmap As Bitmap = New Bitmap(pctSeal.Width, pctSeal.Height)
pctSeal.Image = bitmap

'描画グラフィック
Dim g As Graphics

'塗りつぶす前の背景を白にする
pctSeal.BackColor = System.Drawing.Color.White

g = Graphics.FromImage(pctSeal.Image)

'円を描画します。
For index As Integer = 60 To 55 Step -1
objRectangle.Width = index
objRectangle.Height = index
If index Mod 2 = 0 Then
objRectangle.X += 1
objRectangle.Y += 1
End If
g.DrawEllipse(Pens.Red, objRectangle)
Next
pctSeal.Refresh()

' 担当者名を取得します。
Dim strTanto As String
strTanto = mdlcommon.Get_TantoMei(mdlcommon.pptSys_LoginID)

'' 担当者名の性の文字数をカウント。
Dim cntName As Integer = 0
For index As Integer = 0 To strTanto.Length
If strTanto.Substring(index, 1) = " " Then
Exit For
End If
cntName += 1
Next

'文字を描画します。
'フォントオブジェクトの作成
Dim intFontSize As Integer = 0
Select Case cntName
Case 1
intFontSize = 20
Case 2
intFontSize = 20
Case 3
intFontSize = 20
Case 4
intFontSize = 20
Case Else
intFontSize = 10
End Select

Dim fnt As New Font("HG正楷書体-PRO", intFontSize, FontStyle.Bold)

'文字列を位置(0,0)、赤で表示
For index As Integer = 0 To strTanto.Substring(0, cntName).Length - 1
g.DrawString(strTanto.Substring(index, 1), fnt, Brushes.Red, 13, 5 + (25 * index + 1))
Next

'PNG形式で保存する
Dim fileName As String
fileName = Path.Combine("C:\APPG4\Log\", mdlcommon.pptSys_LoginID & ".png")
pctSeal.Image.Save(fileName, System.Drawing.Imaging.ImageFormat.Png)
'' ↑BMPだとCEに入らない(容量の問題)ここが問題なのかも?

'開放
g.Dispose()

'テーブルに保存
Using conWk2 As New SqlCeConnection(My.Settings.appworkConnectionString)
conWk2.Open()
Using fs As New FileStream(fileName, IO.FileMode.Open, IO.FileAccess.Read)
'ファイルを読み込む
Dim ImageData(fs.Length) As Byte
fs.Read(ImageData, 0, System.Convert.ToInt32(fs.Length))
fs.Close()

adpWk.Insert(mdlcommon.pptSys_LoginID, ImageData)
End Using
End Using

Catch ex As Exception
mdlErrMsg.CrtErrMsg(mErr0015, mErrT0010)
outLog(ex.Message)
End Try

End Sub
引用返信 編集キー/
■31854 / inTopicNo.2)  Re[1]: CrystalReport に出力した画像の背景が黒くなる
□投稿者/ ヒトシ (2回)-(2009/01/29(Thu) 14:56:22)
自己解決しましたので報告しておきます。


まず、私の勘違いで、背景色が透明のままだったようです。
'塗りつぶす前の背景を白にする
の直下に、
g.FillRectangle(Brushes.White, objRectangle)
でPictureBoxを白く塗り潰し、
それをDBに取り込んでクリレポで印字してみたところ、
ちゃんと背景色が白で表示されるようになりました。

また、この場合ですと、白以外の紙に出るとどうなるのだろう?
と思って、適当なPNGのファイルをクリレポに出してみましたが、
クリレポでは透過色は認識できないようで、黒になってしまいました。

一応、紙に出したモノをチェックしましたが、
背景に何かを出力している様子は見当たりませんでしたので、
上記のような心配はないとは思うのですが。。。

チェック・試しがまだまだ足りなかったようです。お騒がせ致しました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -