我正在尝试使用与此类似的渐变创建热图:

此图像显示三个点,渐变很好地融合在一起.
这是我目前在绘图功能中所做的事情:
public void DrawGradient(int x, int y, Graphics g) {
using (var ellipsePath = new GraphicsPath()) {
var bounds = new Rectangle(x, y, 100, 100);
ellipsePath.AddEllipse(bounds);
var brush = new PathGradientBrush(ellipsePath);
Color[] colors = {
Color.FromArgb(64, 0, 0, 255),
Color.FromArgb(140, 0, 255, 0),
Color.FromArgb(216, 255, 255, 0),
Color.FromArgb(255, 255, 0, 0)
};
float[] relativePositions = {0f,0.25f,0.5f, 1.0f};
ColorBlend colorBlend = new ColorBlend();
colorBlend.Colors = colors;
colorBlend.Positions = relativePositions;
brush.InterpolationColors = colorBlend;
g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver;
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
g.SmoothingMode …Run Code Online (Sandbox Code Playgroud) 查看手册页fopen我无法得到这个问题的明确答案.
FILE *fopen(const char *path, const char *mode);
Run Code Online (Sandbox Code Playgroud)
我理解fopen返回一个指向流的文件指针,但是作为副产品创建的文件描述符?我试图确保FD_CLOEXEC在每个创建文件描述符的实例上包含该标志.如果文件描述符实际上是在没有"fd"用作输入的情况下从fopen最佳使用方式创建的fnctl().
谢谢.
我在非常罕见的情况下看到pthread_cond_timedwait()返回EINVAL并导致系统崩溃.我知道这意味着传入的参数之一必须是无效的,但互斥锁或cond变量如何变为无效?
有没有办法在调用pthread_cond_timedwait()之前检查这些参数以防止崩溃?
在创建Ada DLL时,是否有一种简单的方法可以防止Ada名称被破坏?
这是我的.adb代码
with Ada.Text_IO;
package body testDLL is
procedure Print_Call is
begin
Ada.Text_IO.Put_Line("Hello World");
end Print_Call;
function Add_Nums(A,B : in Integer) return Integer is
begin
return A + B;
end Add_Nums;
end testDLL;
Run Code Online (Sandbox Code Playgroud)
我的.ads
package testDLL is
procedure Print_Call;
pragma export (dll, Print_Call, "Print_Call");
function Add_Nums(A,B : in Integer) return Integer;
pragma export (dll, Add_Nums, "Add_Nums");
end testDLL;
Run Code Online (Sandbox Code Playgroud)
我的python
import ctypes
TestDLL = ctypes.WinDLL ("libTestDLL.dll")
Print_Call = getattr(TestDLL, "Print_Call@0")
Print_Call()
Run Code Online (Sandbox Code Playgroud)
你可以看到我必须在函数名的末尾添加'@ 0',但是当我将相同的代码移动到不同的编译器时,这似乎会改变.这给我带来了一些问题.我需要一个标准的修改格式或一种方法来删除整个修改.