按指定的值將形狀定位到 Chart 的座標軸中

2021-06-30 16:27:13 字數 3258 閱讀 6506

''' ''' 將任意形狀以指定的值定位在chart的某一座標軸中。

'''

''' 要進行定位的形狀

''' 此形狀將要定位的軸

''' 此形狀在chart中所處的值

''' 將形狀按指定的百分比的寬度或者高度的部位定位到座標軸的指定值的位置。

''' 如果其值設定為0,則表示此形狀的左端(或上端)定位在設定的位置處,

''' 如果其值為100,則表示此形狀的右端(或下端)定位在設定的位置處。

'''

public shared sub setpositioninchart(byval shapetolocate as excel.shape, byval ax as excel.axis, _

byval value as double, optional byval percent as double = 0)

dim cht as excel.chart = directcast(ax.parent, excel.chart)

if cht isnot nothing then

try '先考察形狀是否是在chart之中

shapetolocate = cht.shapes.item(shapetolocate.name)

catch ex as exception '如果形狀不在chart中,則將形狀複製進chart,並將原形狀刪除

shapetolocate.copy()

cht.paste()

shapetolocate.delete()

shapetolocate = cht.shapes.item(cht.shapes.count)

end try

'select case ax.type

case excel.xlaxistype.xlcategory '橫向x軸

dim positioninchartbyvalue as double = getpositioninchartbyvalue(ax, value)

with shapetolocate

.left = positioninchartbyvalue - percent * .width

end with

case excel.xlaxistype.xlvalue '豎向y軸

dim positioninchartbyvalue as double = getpositioninchartbyvalue(ax, value)

with shapetolocate

.top = positioninchartbyvalue - percent * .height

end with

case excel.xlaxistype.xlseriesaxis

messagebox.show("暫時不知道這是什麼座標軸", "warning", messageboxbuttons.ok, messageboxicon.warning)

end select

end if

end sub

''' ''' 根據在座標軸中的值,來返回這個值在chart中的幾何位置

'''

'''

'''

''' 如果ax是乙個水平x軸,則返回的是座標軸ax中的值value在chart中的left值;

''' 如果ax是乙個豎向y軸,則返回的是座標軸ax中的值value在chart中的top值。

'''

public shared function getpositioninchartbyvalue(byval ax as excel.axis, byval value as double) as double

dim positioninchartbyvalue as double

dim cht as excel.chart = directcast(ax.parent, excel.chart)

'dim max as double = ax.maximumscale

dim min as double = ax.minimumscale

'dim plota as excel.plotarea = cht.plotarea

select case ax.type

case excel.xlaxistype.xlcategory '橫向x軸

dim positioninplot as double

if ax.reverseplotorder = false then '正向分類,說明x軸資料為左邊小右邊大

positioninplot = plota.insidewidth * (value - min) / (max - min)

else '逆序類別,說明x軸資料為左邊大右邊小

positioninplot = plota.insidewidth * (max - value) / (max - min)

end if

positioninchartbyvalue = plota.insideleft + positioninplot

case excel.xlaxistype.xlvalue '豎向y軸

dim positioninplot as double

if ax.reverseplotorder = false then '順序刻度值,說明y軸資料為下邊小上邊大

positioninplot = plota.insideheight * (max - value) / (max - min)

else '逆序刻度值,說明y軸資料為上邊小下邊大

positioninplot = plota.insideheight * (value - min) / (max - min)

end if

positioninchartbyvalue = plota.insidetop + positioninplot

case excel.xlaxistype.xlseriesaxis

debug.print("暫時不知道這是什麼座標軸")

end select

return positioninchartbyvalue

end function

點選定位到指定位置 伺服電機定位的入門介紹

在之前的幾篇文章中我們講述了伺服電機閉環原理的定位伺服電機閉環原理的定位 伺服電機編碼器的解析度伺服電機編碼器的解析度 伺服驅動器電子齒輪比的設定方法伺服驅動器電子齒輪比的設定方法,這幾個問題了明白後,今天我們來具體說說如何使用伺服電機實現定位功能。首先我們需要設定伺服驅動器的控制模式為位置模式,採...

將具有分割號的字串配置按指定位置進行過濾

將具有分割號的字串配置進行過濾 param point 在分割的第幾個坑里,0開始 param filterstr 要處理的字串 return 返回過濾後的字元 public string calcpoint int point,string filterstr nextindex index 1 ...

js精確到指定位數的小數

將數字四捨五入到指定的小數字數。使用math.round 和模板字面量將數字四捨五入為指定的小數字數。省略第二個引數decimals,數字將被四捨五入到乙個整數。const round n,decimals 0 number e e round 3.1415926535897932384626433...