再來就是應該要能夠繪製多個選取資料
而不是單一個row
重點應該是放在怎麼選擇擷取範圍大小
1. 當多選時,中間可能跳過空白
2. 描繪的基底圖層,是畫面上可視範圍的GridView內容
3. 被選取托放的 row, 被景色深藍
4. 應該空下未被選取的 row, 然後繼續描繪之後有被選取的 row
*************
*************
空白
*************
可能需要一個一個row判斷
發現說目前的托放動作
有可能畫面上不會出現選取的資料
選取資料在畫面之外
如果照目前走,會碰到說
基底圖層並沒有包含任何選取 row
弄一個空白圖只有一個row表示
有點複雜
除非說我自己控制繪圖
目前先在滑鼠點選的row進行基底圖層的抽取
家個判斷該 row是不是屬於 選取row
不是的話就用個空白的 基底圖層代替
目前又卡在說form跟隨滑鼠跑,但是放開以後,
滑鼠還是在form之上
變成說mouse up事件無法發生在原本表單之上
無法執行關閉 form 的動作
除非說form是完全穿透的狀態
所有事件都會直接穿透
目前設定讓 form 稍微位移,
不至於讓鼠標壓在 圖層form 上
發現目前如果再非合法托放區放開滑鼠
將會造成圖層form停留
無法引發form的關閉
目前想法是
透過一個全域form
只是配合 圖層改變 去呼叫或隱藏 form
用hide跟show會造成表單閃爍
在想看其他方式能不能解決
先這樣
========================================================
再來要讓 form 跟隨滑鼠
Dim f As Form = PictureBox2.FindForm
f.Location = New Point(MousePosition.X - (f.Width / 2), MousePosition.Y - (f.Height / 2))
@要注意遺下mouse_up的時候要釋放關閉form
要先將pictureBox從該表單拿掉
PictureBox2.Dock = DockStyle.None
PictureBox2.Parent = Nothing
在座關閉動作
VB.NET 调整图片透明度 半透明图片
http://hi.baidu.com/nazi_1911/blog/item/22a73d3eeabc2e1abaa167ba.html
感覺目前做法不太好
應該根本上只是抓圖片
然後對圖片座透明處理
然後再讓他跟隨滑鼠
而不是弄出一個form
@感覺可以做出透明圖片
但是實際上並不能真正穿透
似乎還是要透過form去做到穿透
幹~多此一舉
還是要form
================================================
一直碰壁
可否將DataGridView內容另存為圖檔(含背景顏色)http://www.blueshop.com.tw/board/show.asp?subcde=BRD20080602121510OF2 試著先將girdview存為圖片 然後再切割該圖片內容 |
'目前測試可以擷取到所要的範圍
Dim ht As DataGridView.HitTestInfo = DataGridView1.HitTest(e.X, e.Y)
If ht.RowIndex >= 0 Then
Try
Dim g As Graphics = Me.DataGridView1.CreateGraphics
Dim ibitMap As New Bitmap( _ Me.DataGridView1.ClientSize.Width, _ Me.DataGridView1.ClientSize.Height, g)
Dim DataGridViewRectangle As New _ Rectangle(Me.DataGridView1.ClientRectangle.X, _ Me.DataGridView1.ClientRectangle.Y, _ Me.DataGridView1.ClientSize.Width, _ Me.DataGridView1.ClientSize.Height)
Me.DataGridView1.DrawToBitmap(ibitMap, DataGridViewRectangle)
Dim g2 As Graphics = PictureBox2.CreateGraphics()
'擷取範圍
Dim g2 As Graphics = PictureBox2.CreateGraphics()
'擷取範圍
Dim rec As Rectangle = New Rectangle(ht.ColumnX, ht.RowY, Me.DataGridView1.ClientSize.Width - 4, DataGridView1.Rows(ht.RowIndex).Height)
'顯示位置
Dim recShow As Rectangle = New Rectangle(0, 0, Me.DataGridView1.ClientSize.Width - 4, DataGridView1.Rows(ht.RowIndex).Height)
g2.DrawImage(ibitMap, recShow, rec, GraphicsUnit.Pixel)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End If
@目前希望將繪圖繪製在pictureBox上
@目前希望將繪圖繪製在pictureBox上
然後開一個新的form
將圖片放在該form
透過form的透明化
來達到需求
但是會需要PictureBox需要不斷重新繪製
不然只要剛呼叫Form.show
就會造成剛剛繪製完成的PictureBox
目前作法是
目前作法是
把 BitMap, 顯示Rectangle, 切割Rectangle 宣告為全域變數
將 PictureBox.Paint 事件加入判斷
當 BitMap 非 Nothing
引發自我重繪
e.Graphics.DrawImage(ibitMap, recShow, rec, GraphicsUnit.Pixel)
Bitmap.clone 引發記憶體不足問題
=======================================
VB無所不能之四:制作透明和半透明窗體
http://merry05.blog.hexun.com.tw/48876475_d.html
透過建立一個 半透明 form
將繪圖繪製在 form 上
然後讓 form 跟隨滑鼠
直到停止托放
=========================================
VB.net的繪圖 [Part I]
VB.net 繪圖
'圖片擷取
Dim g As Graphics = e.Graphics
Dim im As Image = Image.FromFile("c:\vb教本\picture\Stone.bmp")
Dim 截圖方塊 As Rectangle = New Rectangle(87, 37, 84,104)
Dim 顯示位置 As Rectangle = New Rectangle(0, 0, 84,
104)g.DrawImage(im, 顯示位置, 截圖方塊, GraphicsUnit.Pixel)
Dim g As Graphics = e.Graphics
Dim im As Image = Image.FromFile("c:\vb教本\picture\Stone.bmp")
Dim 截圖方塊 As Rectangle = New Rectangle(87, 37, 84,104)
Dim 顯示位置 As Rectangle = New Rectangle(0, 0, 84,
104)g.DrawImage(im, 顯示位置, 截圖方塊, GraphicsUnit.Pixel)
Bitmap.MakeTransparent 方法 ()
為這個 Bitmap 將預設的透明色彩變為透明。
'有機會改改托放作業的顯示方式
希望做到panel淡色描繪的玻璃樣式
RegionData 類別
描繪區塊內容
HOW TO:使用區域的裁剪
看起來這些好像是把文字繪製在控件上面
有點不符需求
Winform中DataGridView单元格内容字体突出显示
http://hi.baidu.com/xiangboren/blog/item/1bbf9fd422ebc50ca08bb7b5.html
HOW TO:使用 Windows Form DataGridView 控制項中的影像資料行
http://blog.xuite.net/alwaysfuturevision/liminzhang/8534715
看能不能抓到點選 row 的 location
從該row去描繪
或是說透過panel
描繪一個方塊
複製點選區塊
======================================================================
.NET中DragDrop的光标
Control.GiveFeedback 事件
目前可以描繪控制向外框
但是侷限在controls
要找辦法描繪 GridViewRow
然後描繪整個row,而不只是外框
沒有留言:
張貼留言