电泳V8出图

电泳V8仪器设置传输图形数据后在串口就能收到三部分数据。一:折线图部分的数据;二:波谷描述数据;三条带图的数据。折线图就是正常Y坐标表示,画它的时候按照点数建立一个一样像素宽度的位图按Y值话就是了。波谷数据用来画折线图上的分割线,三个数据一组来描述(第二第三个描述一个波峰的两边X坐标,在那个X值上画分割线),波谷数据有六个块的话就画Gama M蛋白波分那几个字。条带图数据就是6个字符是一个HTML颜色代码,按颜色一个个像素宽度画竖线就行。

数据示例

//s ^TMP("zlzmach","v8")=$lb(mi, epis, datastr, isfullcolor)
	//s testStr="0.0004^0.0003^0.0003^0.0002^0.0001^0.0001^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^"
	//s testStr=testStr_"0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^-0.0000^-0.0000^-0.0000^-0.0000^-0.0000^-0.0000^-0.0000^0.0000^0.0000^0.0000^0.0000^-0.0000^-0.0000^-0.0000^-0.0000^-0.0000^-0.0000^0.0"
	//s testStr=testStr_"000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.000"
	//s testStr=testStr_"1^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0002^0.0002^0.0002^0.0002^0.0002^0.0002^0.0002^0.0002^0.0002^0.0003^0.0003^0.0003^0.0003^0.0003^0.0003^0.0004^0.0004^0.0004^0.0004^0.0005^0.0005^0.0005^0.0005^0.0006^0.0006^"
	//s testStr=testStr_"0.0006^0.0007^0.0007^0.0007^0.0007^0.0008^0.0008^0.0009^0.0009^0.0009^0.0010^0.0010^0.0011^0.0011^0.0012^0.0012^0.0013^0.0014^0.0014^0.0015^0.0015^0.0016^0.0017^0.0018^0.0018^0.0019^0.0020^0.0021^0.0021^0.0022^0.0023^0.0024^0.0025^0.0026^0."
	//s testStr=testStr_"0027^0.0028^0.0029^0.0029^0.0030^0.0031^0.0032^0.0033^0.0034^0.0035^0.0037^0.0038^0.0039^0.0040^0.0042^0.0043^0.0045^0.0046^0.0048^0.0050^0.0052^0.0055^0.0057^0.0060^0.0063^0.0066^0.0069^0.0072^0.0076^0.0079^0.0083^0.0086^0.0090^0.0094^0.00"
	//s testStr=testStr_"98^0.0101^0.0105^0.0109^0.0113^0.0116^0.0120^0.0124^0.0127^0.0130^0.0133^0.0136^0.0139^0.0142^0.0144^0.0146^0.0148^0.0150^0.0151^0.0152^0.0153^0.0153^0.0154^0.0154^0.0154^0.0153^0.0153^0.0152^0.0151^0.0150^0.0148^0.0147^0.0145^0.0143^0.0141"
	//s testStr=testStr_"^0.0139^0.0137^0.0134^0.0132^0.0128^0.0125^0.0121^0.0117^0.0112^0.0107^0.0102^0.0096^0.0091^0.0084^0.0078^0.0072^0.0066^0.0060^0.0054^0.0048^0.0042^0.0037^0.0033^0.0028^0.0025^0.0021^0.0018^0.0016^0.0014^0.0012^0.0010^0.0009^0.0007^0.0006^0"
	//s testStr=testStr_".0006^0.0005^0.0004^0.0004^0.0003^0.0003^0.0002^0.0002^0.0002^0.0002^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0"
	//s testStr=testStr_"000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0002^0.0002^0.0002^0.0002^0.0002^0.0002^0.0002^0.0002^0.000"
	//s testStr=testStr_"3^0.0003^0.0003^0.0003^0.0003^0.0003^0.0003^0.0003^0.0003^0.0003^0.0004^0.0004^0.0004^0.0004^0.0004^0.0004^0.0004^0.0005^0.0005^0.0005^0.0005^0.0006^0.0006^0.0006^0.0006^0.0006^0.0007^0.0007^0.0007^0.0007^0.0008^0.0008^0.0008^0.0008^0.0009^"
	//s testStr=testStr_"0.0009^0.0009^0.0009^0.0010^0.0010^0.0010^0.0011^0.0011^0.0011^0.0012^0.0012^0.0012^0.0012^0.0013^0.0013^0.0013^0.0013^0.0014^0.0014^0.0014^0.0014^0.0014^0.0014^0.0014^0.0015^0.0015^0.0015^0.0015^0.0015^0.0015^0.0015^0.0014^0.0014^0.0014^0."
	//s testStr=testStr_"0014^0.0014^0.0014^0.0013^0.0013^0.0013^0.0013^0.0012^0.0012^0.0012^0.0011^0.0011^0.0011^0.0010^0.0010^0.0010^0.0009^0.0009^0.0009^0.0008^0.0008^0.0008^0.0008^0.0007^0.0007^0.0007^0.0007^0.0007^0.0006^0.0006^0.0006^0.0006^0.0006^0.0006^0.00"
	//s testStr=testStr_"06^0.0006^0.0006^0.0006^0.0006^0.0006^0.0006^0.0006^0.0006^0.0007^0.0007^0.0007^0.0007^0.0007^0.0008^0.0008^0.0008^0.0009^0.0009^0.0009^0.0010^0.0010^0.0011^0.0011^0.0011^0.0012^0.0012^0.0013^0.0013^0.0014^0.0014^0.0015^0.0015^0.0016^0.0016"
	//s testStr=testStr_"^0.0017^0.0017^0.0018^0.0018^0.0019^0.0019^0.0019^0.0020^0.0020^0.0021^0.0021^0.0021^0.0022^0.0022^0.0022^0.0022^0.0023^0.0023^0.0023^0.0023^0.0023^0.0023^0.0023^0.0023^0.0023^0.0023^0.0022^0.0022^0.0022^0.0022^0.0021^0.0021^0.0021^0.0020^0"
	//s testStr=testStr_".0020^0.0019^0.0019^0.0018^0.0018^0.0017^0.0017^0.0017^0.0016^0.0016^0.0015^0.0015^0.0014^0.0014^0.0014^0.0013^0.0013^0.0012^0.0012^0.0012^0.0011^0.0011^0.0011^0.0010^0.0010^0.0010^0.0009^0.0009^0.0009^0.0008^0.0008^0.0008^0.0008^0.0008^0.0"
	//s testStr=testStr_"007^0.0007^0.0007^0.0007^0.0007^0.0007^0.0007^0.0006^0.0006^0.0006^0.0006^0.0006^0.0006^0.0006^0.0006^0.0006^0.0006^0.0006^0.0006^0.0006^0.0006^0.0006^0.0006^0.0006^0.0006^0.0006^0.0006^0.0006^0.0007^0.0007^0.0007^0.0007^0.0007^0.0007^0.000"
	//s testStr=testStr_"7^0.0007^0.0007^0.0007^0.0007^0.0007^0.0007^0.0007^0.0008^0.0008^0.0008^0.0008^0.0008^0.0008^0.0008^0.0009^0.0009^0.0009^0.0009^0.0009^0.0009^0.0009^0.0010^0.0010^0.0010^0.0010^0.0010^0.0010^0.0011^0.0011^0.0011^0.0011^0.0011^0.0011^0.0012^"
	//s testStr=testStr_"0.0012^0.0012^0.0012^0.0013^0.0013^0.0013^0.0013^0.0013^0.0014^0.0014^0.0014^0.0014^0.0014^0.0015^0.0015^0.0015^0.0015^0.0015^0.0015^0.0015^0.0015^0.0015^0.0015^0.0015^0.0015^0.0015^0.0015^0.0015^0.0015^0.0015^0.0015^0.0015^0.0015^0.0015^0."
	//s testStr=testStr_"0015^0.0015^0.0015^0.0015^0.0015^0.0015^0.0014^0.0014^0.0014^0.0014^0.0014^0.0014^0.0014^0.0014^0.0014^0.0014^0.0014^0.0014^0.0014^0.0014^0.0014^0.0015^0.0015^0.0015^0.0015^0.0015^0.0015^0.0016^0.0016^0.0016^0.0016^0.0017^0.0017^0.0017^0.00"
	//s testStr=testStr_"17^0.0018^0.0018^0.0018^0.0019^0.0019^0.0019^0.0020^0.0020^0.0020^0.0021^0.0021^0.0022^0.0022^0.0022^0.0023^0.0023^0.0023^0.0024^0.0024^0.0024^0.0025^0.0025^0.0025^0.0025^0.0025^0.0025^0.0026^0.0026^0.0026^0.0026^0.0026^0.0026^0.0026^0.0026"
	//s testStr=testStr_"^0.0026^0.0026^0.0026^0.0026^0.0026^0.0027^0.0027^0.0027^0.0027^0.0027^0.0027^0.0028^0.0028^0.0028^0.0028^0.0029^0.0029^0.0029^0.0030^0.0030^0.0030^0.0031^0.0031^0.0032^0.0032^0.0033^0.0033^0.0034^0.0034^0.0035^0.0036^0.0036^0.0037^0.0037^0"
	//s testStr=testStr_".0038^0.0039^0.0039^0.0040^0.0040^0.0041^0.0042^0.0042^0.0043^0.0044^0.0044^0.0045^0.0046^0.0047^0.0047^0.0048^0.0049^0.0050^0.0050^0.0051^0.0052^0.0053^0.0054^0.0054^0.0055^0.0056^0.0057^0.0058^0.0059^0.0060^0.0061^0.0061^0.0062^0.0063^0.0"
	//s testStr=testStr_"064^0.0065^0.0066^0.0067^0.0068^0.0069^0.0070^0.0070^0.0071^0.0072^0.0073^0.0074^0.0074^0.0075^0.0076^0.0076^0.0077^0.0077^0.0078^0.0079^0.0079^0.0079^0.0080^0.0080^0.0081^0.0081^0.0081^0.0082^0.0082^0.0082^0.0082^0.0083^0.0083^0.0083^0.008"
	//s testStr=testStr_"3^0.0083^0.0083^0.0083^0.0083^0.0083^0.0083^0.0082^0.0082^0.0082^0.0081^0.0081^0.0081^0.0080^0.0080^0.0079^0.0078^0.0078^0.0077^0.0076^0.0076^0.0075^0.0074^0.0073^0.0072^0.0072^0.0071^0.0070^0.0069^0.0068^0.0067^0.0066^0.0065^0.0064^0.0063^"
	//s testStr=testStr_"0.0062^0.0061^0.0060^0.0059^0.0058^0.0057^0.0056^0.0055^0.0054^0.0053^0.0052^0.0051^0.0050^0.0049^0.0048^0.0047^0.0046^0.0045^0.0044^0.0043^0.0042^0.0041^0.0040^0.0039^0.0038^0.0037^0.0036^0.0035^0.0034^0.0033^0.0032^0.0031^0.0030^0.0029^0."
	//s testStr=testStr_"0028^0.0027^0.0026^0.0025^0.0024^0.0023^0.0022^0.0021^0.0020^0.0019^0.0018^0.0017^0.0016^0.0016^0.0015^0.0014^0.0013^0.0012^0.0012^0.0011^0.0010^0.0010^0.0009^0.0009^0.0008^0.0008^0.0007^0.0007^0.0006^0.0006^0.0005^0.0005^0.0005^0.0004^0.00"
	//s testStr=testStr_"04^0.0004^0.0003^0.0003^0.0003^0.0002^0.0002^0.0002^0.0002^0.0002^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0000^0.0000^0.0000^0.0000"
	//s testStr=testStr_"^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^-0.0000^-0.0000"
	//s testStr=testStr_"^-0.0000^-0.0000^-0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.000"
	//s testStr=testStr_"0^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0001^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^"
	//s testStr=testStr_"0.0000^0.0000^0.0000^0.0000^-0.0000^-0.0000^-0.0000^-0.0000^-0.0000^-0.0000^-0.0000^-0.0000^-0.0000^-0.0000^-0.0000^-0.0000^-0.0000^-0.0000^-0.0000^-0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000^0.0000"
	//波谷数据
	//s testStr=testStr_"#0^43^283^0^283^422^0^422^540^0^540^706^0^706^968"
	
	//s ScanImageStr="fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefffefefffefefffefefffefefffefefff"
	//s ScanImageStr=ScanImageStr_"efefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
	//s ScanImageStr=ScanImageStr_"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
	//s ScanImageStr=ScanImageStr_"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefffefefffefefffefefffefefff"
	//s ScanImageStr=ScanImageStr_"efefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefefefefefefefefefefefefefefefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffffffffffffffffffffffffffffffffffffffefefffefefff"
	//s ScanImageStr=ScanImageStr_"efefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
	//s ScanImageStr=ScanImageStr_"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefffefefffefefffefefffefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef"
	//s ScanImageStr=ScanImageStr_"efefefefefefefefefefefefefefefefefefefefefefefefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfdfdfdfdfdfdfdfdfdfdfcfcfdfcfcfdfcfcfdfcfcfdfcfcfdfcfcfdfcfcfdf"
	//s ScanImageStr=ScanImageStr_"cfcfdfcfcfdfcfcfdfcfcfdfcfcfdfcfcfdfcfcfdfbfbfdfbfbfcfbfbfcfbfbfcfbfbfcfbfbfcfbfbfcfbfbfcfbfbfcfafafcfafafcfafafcfafafbfafafbf9f9fbf9f9fbf9f9faf8f8faf8f8faf7f7faf7f7f9f6f6f9f6f6f8f5f5f8f4f4f7f4f4f7f3f3f6f2f2f6f1f1f5f0f0f4efeff4eeeef3ececf2e"
	//s ScanImageStr=ScanImageStr_"bebf1eaeaf0e8e8efe6e6ede5e5ece3e3ebe1e1e9dedee8dcdce6d9d9e4d7d7e2d4d4e0d1d1dececedccacad9c7c7d7c3c3d4c0c0d1bcbccfb8b8ccb4b4c9b0b0c6acacc3a8a8c0a3a3bd9f9fba9b9bb79797b49393b18f8fae8b8bab8787a98383a67f7fa37b7ba077779d73739a6f6f976b6b946767916"
	//s ScanImageStr=ScanImageStr_"3638e5e5e8b5a5a885656855151824d4d7f48487b4444783f3f753b3b7237376f34346d31316a2e2e692c2c672a2a662929652828642929652929652b2b662d2d6830306a33336c37376f3b3b723f3f754444794a4a7c4f4f805555855b5b8962628e6868926f6f9775759c7c7ca18383a68a8aab9191b09"
	//s ScanImageStr=ScanImageStr_"898b59f9fbaa6a6bfadadc4b4b4c9babacdc0c0d2c6c6d6ccccdad1d1ded6d6e1dadae5dedee8e2e2eae5e5ede9e9efebebf1eeeef3f0f0f4f2f2f5f3f3f7f4f4f8f6f6f8f7f7f9f7f7faf8f8faf9f9fbfafafbfafafcfbfbfcfbfbfcfbfbfcfbfbfdfcfcfdfcfcfdfcfcfdfcfcfdfcfcfdfcfcfdfcfcfdf"
	//s ScanImageStr=ScanImageStr_"cfcfdfcfcfdfcfcfdfcfcfdfcfcfdfcfcfdfcfcfdfbfbfdfbfbfcfbfbfcfbfbfcfbfbfcfafafcfafafcfafafbf9f9fbf9f9fbf9f9fbf8f8faf8f8faf8f8faf8f8faf7f7faf7f7f9f7f7f9f6f6f9f6f6f9f6f6f8f5f5f8f5f5f8f5f5f8f5f5f8f4f4f7f4f4f7f4f4f7f3f3f7f3f3f7f3f3f6f3f3f6f2f2f6f"
	//s ScanImageStr=ScanImageStr_"2f2f6f2f2f6f1f1f5f1f1f5f1f1f5f0f0f4f0f0f4efeff4efeff4efeff3eeeef3eeeef3ededf2ededf2ededf2ececf2ececf1ebebf1ebebf1ebebf1eaeaf0eaeaf0eaeaf0eaeaf0eaeaf0e9e9efe9e9efe9e9efe9e9efe9e9efe9e9efe9e9efe9e9efe9e9efe9e9efe9e9efe9e9efe9e9f0eaeaf0eaeaf0e"
	//s ScanImageStr=ScanImageStr_"aeaf0eaeaf0ebebf1ebebf1ebebf1ececf1ececf1ececf2ededf2ededf2ededf2ededf2eeeef3eeeef3eeeef3eeeef3eeeef3eeeef3eeeef3eeeef3eeeef3eeeef3eeeef3eeeef3eeeef3eeeef3eeeef3ededf2ededf2ededf2ededf2ececf2ececf2ececf1ececf1ebebf1ebebf1ebebf1ebebf0eaeaf0e"
	//s ScanImageStr=ScanImageStr_"aeaf0e9e9efe9e9efe8e8efe8e8eee7e7eee7e7eee6e6ede6e6ede5e5ede5e5ece4e4ece3e3ebe2e2ebe2e2eae1e1e9e0e0e9dfdfe8dedee7dddde6dbdbe5dadae4d8d8e3d7d7e2d5d5e1d3d3e0d1d1decfcfddcdcddbcacad9c8c8d7c5c5d5c2c2d3bfbfd1bcbccfb9b9ccb5b5cab2b2c8afafc5acacc3a"
	//s ScanImageStr=ScanImageStr_"9a9c1a6a6bfa3a3bda0a0bb9e9eb99c9cb89a9ab69898b59797b49696b39595b39595b39595b39595b39696b49797b49999b59a9ab69c9cb89f9fbaa1a1bba4a4bda7a7bfaaaac2adadc4b0b0c6b2b2c8b5b5cab8b8ccbbbbcebdbdcfbfbfd1c1c1d2c2c2d3c3c3d4c4c4d5c5c5d5c5c5d5c5c5d5c5c5d5c"
	//s ScanImageStr=ScanImageStr_"5c5d5c4c4d5c3c3d4c2c2d3c1c1d3c0c0d2bfbfd1bebed1bebed0bdbdcfbcbccfbcbccebbbbcebbbbcebbbbcebbbbcebbbbcebbbbcebcbccfbcbccfbdbdcfbdbdd0bebed0bfbfd1bfbfd1c0c0d1c0c0d2c0c0d2c0c0d2c0c0d2c0c0d2c0c0d2c0c0d2bfbfd1bebed1bdbdd0bcbccfbbbbceb9b9cdb7b7cbb"
	//s ScanImageStr=ScanImageStr_"5b5cab3b3c8b0b0c6adadc4ababc2a7a7c0a4a4bea1a1bb9d9db99999b69696b39292b08e8eae8a8aab8686a88282a57e7ea27a7a9f77779d73739a7070986d6d966a6a9468689265659064648f62628e61618d61618d61618d61618d62628e63638f6565906767926a6a946d6d9670709874749b78789e7"
	//s ScanImageStr=ScanImageStr_"c7ca18080a48585a78989aa8e8eae9393b19898b59d9db9a3a3bca8a8c0adadc4b2b2c7b7b7cbbbbbcec0c0d2c5c5d5c9c9d8cdcddbd1d1ded5d5e1d9d9e3dcdce6dfdfe8e2e2eae4e4ece7e7ede9e9efebebf0ececf2eeeef3efeff4f0f0f5f1f1f5f2f2f6f3f3f7f4f4f7f4f4f8f5f5f8f5f5f8f6f6f8f"
	//s ScanImageStr=ScanImageStr_"6f6f9f6f6f9f6f6f9f7f7f9f7f7f9f7f7f9f7f7f9f7f7f9f7f7f9f7f7f9f7f7f9f7f7f9f7f7f9f7f7f9f7f7f9f7f7f9f7f7f9f7f7f9f7f7f9f7f7f9f7f7f9f7f7f9f7f7faf7f7faf7f7faf7f7faf7f7faf7f7faf7f7faf7f7faf7f7faf7f7faf8f8faf8f8faf8f8faf8f8faf8f8faf8f8faf8f8faf8f8faf"
	//s ScanImageStr=ScanImageStr_"8f8faf8f8faf8f8faf9f9fbf9f9fbf9f9fbf9f9fbf9f9fbf9f9fbfafafbfafafbfafafbfafafcfafafcfafafcfbfbfcfbfbfcfbfbfcfbfbfdfcfcfdfcfcfdfcfcfdfcfcfdfcfcfdfcfcfdfcfcfdfdfdfdfdfdfdfdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefefefefefefefefefef"
	//s ScanImageStr=ScanImageStr_"efefefefefefefefefefefffefefffefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
	//s ScanImageStr=ScanImageStr_"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
	//s ScanImageStr=ScanImageStr_"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
	//s ScanImageStr=ScanImageStr_"fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
	//s datastr=testStr_"@"_ScanImageStr
	//zw datastr

解析代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using LIS.BLL.ImageCore;
using System.Drawing;
using System.Data;
using System.IO;
using System.Drawing.Drawing2D;
namespace LIS.Mach.ImageDeal
{
    ///<summary  NoteObject="Class">
    /// [功能描述:V8电泳画折线图] <para/>
    /// [创建者:zlz] <para/>
    /// [创建时间:2018年08月15日] <para/>
    ///<说明>
    ///  [说明:[功能描述:V8电泳画图]<para/>
    ///</说明>
    ///<修改记录>
    ///    [修改时间:本次修改时间]<para/>
    ///    [修改内容:本次修改内容]<para/>
    ///</修改记录>
    ///<修改记录>
    ///    [修改时间:本次修改时间]<para/>
    ///    [修改内容:本次修改内容]<para/>
    ///    M端触发代码,其他的和监听程序一样
    ///    s retObj=##Class(wbsLisMsgAsyncHandler.LISMsg.wbsLisDrawImageAsyncHandlerSoap).%New()
    ///    s ret=retObj.DrawImage(epis,ystr,mi,"MI.MIFV8","-1","","LIS.Mach.ImageDeal.ImageDealV8,LIS.Mach.ImageDeal")
    ///</修改记录>
    ///</summary>
    public class ImageDealV8 : BaseDeal, IDrawImage
    {
        /// <summary>
        /// 绘图方法
        /// </summary>
        /// <param name="epis">流水号</param>
        /// <param name="result">结果</param>
        /// <param name="machID">仪器ID</param>
        /// <param name="dealProcess">处理M</param>
        /// <param name="index">-1认为传到最后</param>
        /// <param name="otherPara">其他参数</param>
        /// <param name="dealClass">C#处理类格式:类全名,不带后缀的动态库名</param>
        /// <returns>是否成功</returns>
        public bool DrawImage(string epis, string result, string machID, string dealProcess, string index, string otherPara, string dealClass)
        {
            string imgTmpPath = "";
            string colorStr1 = "";
            try
            {
                string[] dataMianArr = result.Split('@');
                string[] datas = dataMianArr[0].Split('#');
                //分割得到数据
                string[] dataArr = datas[0].Split('^');
                string[] TroughsArr = null;
                //得的波谷数据
                if (datas.Length > 1)
                {
                    TroughsArr = datas[1].Split('^');
                }
                string ScanImageStr = "";
                if (dataMianArr.Length > 1)
                {
                    ScanImageStr = dataMianArr[1];
                }
                List<double> ddata = new List<double>();
                double maxY = 0;
                double gamaMax=0;
                int dealdataIndex=0;
                foreach (var d in dataArr)
                {
                    dealdataIndex++;
                    if (d == "")
                    {
                        continue;
                    }
                    double curd = Convert.ToDouble(d);
                    if (maxY < curd)
                    {
                        maxY = curd;
                    }
                    if(TroughsArr.Length>17)
                    {
                        if(dealdataIndex>=Convert.ToInt32(TroughsArr[16]))
                        {
                            if (gamaMax < curd)
                            {
                                gamaMax = curd;
                            }
                        }
                    }
                    ddata.Add(curd);
                }
                bool isDrawColor = false;
                if (otherPara == "1")
                {
                    isDrawColor = true;
                }
                double width = ddata.Count;
                //if (width < 600)
                //{
                //    width = 600;
                //}
                double height = 300;
                //x的最小偏移量
                double xmin = width / ddata.Count;
                //y的最小偏移量
                double ymin = (height - 10) / maxY;
                Bitmap img = new Bitmap(Convert.ToInt32(width), Convert.ToInt32(height));
                //画纵坐标
                Graphics g = Graphics.FromImage(img);
                g.SmoothingMode = SmoothingMode.AntiAlias;
                g.Clear(Color.White);
                Pen pen = new Pen(Color.Black);
                Pen penDash = new Pen(Color.Black);
                penDash.Width = 1;
                penDash.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
                Pen penYellow = new Pen(Color.Yellow);
                penYellow.Width = 2;
                Pen penred = new Pen(Color.Red);
                pen.Width = 1;
                g.DrawLine(pen, 1, Convert.ToInt32(height-1), Convert.ToInt32(width), Convert.ToInt32(height-1));
                g.DrawLine(pen, 1, Convert.ToInt32(height-1), 1, 5);
                Dictionary<int,string> colors = new Dictionary<int, string>();
                Font myFont = new Font("黑体", 10, FontStyle.Regular);
                Brush bush = new SolidBrush(Color.Black);
                int MMin = -1;
                int MMax = -1;
                //画波谷数据
                if (TroughsArr != null && TroughsArr.Length > 0)
                {
                    List<string> colorStr = new List<string>();
                    colorStr.Add("#F80000");
                    colorStr.Add("#1E90FF");
                    colorStr.Add("#FFA500");
                    colorStr.Add("#800080");
                    colorStr.Add("#FFC0CB");
                    colorStr.Add("#008000");
                    colorStr.Add("#FFFF00");
                    colorStr.Add("#DEB887");
                    int indexColor=0;
                    
                    for (int j = 0; j <= TroughsArr.Length; j += 3)
                    {
                        double x =0;
                        if (j + 1 < TroughsArr.Length)
                        {
                            x = Convert.ToDouble(TroughsArr[j+1]);
                            g.DrawLine(penDash, Convert.ToInt32(x * xmin), Convert.ToInt32(0), Convert.ToInt32(x * xmin), Convert.ToInt32(height));
                            if (!colors.ContainsKey(Convert.ToInt32(TroughsArr[j+1])))
                            {
                                colors.Add(Convert.ToInt32(TroughsArr[j+1]), colorStr[indexColor]);
                                indexColor++;
                            }
                        }
                        if (j + 2 < TroughsArr.Length)
                        {
                            x = Convert.ToDouble(TroughsArr[j + 2]);
                            g.DrawLine(penDash, Convert.ToInt32(x * xmin), Convert.ToInt32(0), Convert.ToInt32(x * xmin), Convert.ToInt32(height));
                            if (!colors.ContainsKey(Convert.ToInt32(TroughsArr[j + 1])))
                            {
                                colors.Add(Convert.ToInt32(TroughsArr[j + 1]), colorStr[indexColor]);
                                indexColor++;
                            }
                        }
                        //有6块画Gamma M蛋白波峰
                        if (indexColor == 6)
                        {
                            MMin=Convert.ToInt32(TroughsArr[16]);
                            MMax = Convert.ToInt32(TroughsArr[17]);
                            indexColor++;
                            int maxgammaHeight=Convert.ToInt32(height - gamaMax * ymin)-15;
                            if(maxgammaHeight<15)
                            {
                                maxgammaHeight=15;
                            }
                            int gamaMX=Convert.ToInt32(x * xmin) + 5;
                            if(gamaMX+75>width)
                            {
                                gamaMX=Convert.ToInt32(width-75);
                            }
                            g.DrawString("Gamma M蛋白波峰", myFont, bush, gamaMX, maxgammaHeight);
                        }
                    }
                }
                for (int i = 1; i < ddata.Count; i++)
                {
                    if (colors.ContainsKey(i))
                    {
                        penred.Color = ColorTranslator.FromHtml(colors[i]);
                    }
                    if (isDrawColor)
                    {
                        bool shouldGetLine = true;
                        if (MMin > 0 && MMax > 0)
                        {
                            if (i > MMin && i < MMax)
                            {
                                shouldGetLine = true;
                                if (i % 8 == 0)
                                {
                                    shouldGetLine = false;
                                }
                            }
                        }
                        if (shouldGetLine)
                        {
                            g.DrawLine(penred, Convert.ToInt32((i) * xmin), Convert.ToInt32(height), Convert.ToInt32((i) * xmin), Convert.ToInt32(height - ddata[i] * ymin));
                        }
                        else
                        {
                            g.DrawLine(pen, Convert.ToInt32((i) * xmin), Convert.ToInt32(height), Convert.ToInt32((i) * xmin), Convert.ToInt32(height - ddata[i] * ymin));
                        }
                    }
                    g.DrawLine(pen, Convert.ToInt32((i - 1) * xmin), Convert.ToInt32(height - ddata[i - 1] * ymin), Convert.ToInt32((i) * xmin), Convert.ToInt32(height - ddata[i] * ymin));
                }
                
                //画条带图
                if (ScanImageStr != "")
                {
                    Bitmap imgs = new Bitmap(Convert.ToInt32(ScanImageStr.Length/6), Convert.ToInt32(70));
                    //画纵坐标
                    Graphics gs = Graphics.FromImage(imgs);
                    gs.SmoothingMode = SmoothingMode.AntiAlias;
                    gs.Clear(Color.White);
                    Pen pens = new Pen(Color.Black);
                    pens.Width = 1;
                    int xIndex=1;
                    for (int j = 0; j < ScanImageStr.Length; j += 6)
                    {
                        if (j + 6 >= ScanImageStr.Length - 2)
                        {
                            break;
                        }
                        colorStr1=ScanImageStr.Substring(j,6);
                        if (colorStr1.Contains("."))
                        {
                            break;
                        }
                        if (colorStr1.Length == 6)
                        {
                            pens.Color = ColorTranslator.FromHtml("#" + colorStr1);
                            gs.DrawLine(pens, xIndex, 50, xIndex, 0);
                            xIndex++;
                        }
                    }
                    imgTmpPath = @"C:\TRAK\TmpMach" + "\\" + machID + "-" + epis + "ScanImage.bmp";
                    //imgs.Save(imgTmpPath);

                    Bitmap imgAll = new Bitmap(Convert.ToInt32(width), Convert.ToInt32(height)+70-100);
                    //画纵坐标
                    Graphics gall = Graphics.FromImage(imgAll);
                    gall.SmoothingMode = SmoothingMode.AntiAlias;
                    gall.Clear(Color.White);
                    gall.DrawImage(imgs, 0, 0);
                    gall.DrawImage(img, 0, 60, img.Width,img.Height-100);
                    img.Dispose();
                    imgs.Dispose();
                    img = imgAll;
                }
                //判断C盘trak是否存在
                string tmpPath = @"C:\TRAK\TmpMach";
                if (!Directory.Exists("C:\\TRAK"))
                {
                    //新建文件夹
                    Directory.CreateDirectory("C:\\TRAK");
                }
                if (!Directory.Exists(tmpPath))
                {
                    //新建文件夹   
                    Directory.CreateDirectory(tmpPath);
                }
                if (File.Exists(tmpPath + "\\" + epis + ".bmp"))
                {
                    File.Delete(tmpPath + "\\" + epis + ".bmp");
                }
                imgTmpPath = tmpPath + "\\" + machID + "-" + epis + ".bmp";
                //先删除临时目录里面的所有文件
                DeleteFolder(tmpPath);
                img.Save(imgTmpPath);
                img.Dispose();
                string ftpPath = "";
                FtpService ftp = GetFtpHelper(machID, dealProcess, out ftpPath);
                上传图片
                ftp.Upload(imgTmpPath);
                //保存图片
                SaveImg(machID, epis, "SerumP", ftpPath.Split('^')[3] + machID + "-" + epis + ".bmp", dealProcess);
                File.Delete(imgTmpPath);
                return true;
            }
            catch (Exception ex)
            {
                LIS.Core.Util.LogUtils.WriteExceptionLog("绘制V8电泳图发生错误",ex);
                if (imgTmpPath!=""&&File.Exists(imgTmpPath))
                {
                    File.Delete(imgTmpPath);
                }
                return false;
            }
            return false;
        }

        /// 清空指定的文件夹,但不删除文件夹
        /// </summary>
        /// <param name="dir"></param>
        public static void DeleteFolder(string dir)
        {
            foreach (string d in Directory.GetFileSystemEntries(dir))
            {
                if (File.Exists(d))
                {
                    FileInfo fi = new FileInfo(d);
                    if ((DateTime.Now - fi.CreationTime).Minutes > 10)
                    {
                        if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)
                        {
                            fi.Attributes = FileAttributes.Normal;
                        }
                        File.Delete(d);//直接删除其中的文件  
                    }
                }
                else
                {
                    DirectoryInfo d1 = new DirectoryInfo(d);
                    if (d1.GetFiles().Length != 0)
                    {
                        DeleteFolder(d1.FullName);递归删除子文件夹
                    }
                    Directory.Delete(d);
                }
            }
        }
       
    }
}

效果
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小乌鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值