小编Jam*_*son的帖子

将SVG字符串转换为React组件中的图像

我在React组件中有一个动态生成的SVG字符串.我想将其作为图像嵌入到组件中.目前,我正在使用以下内容:

class SomeComponent extends React.Component {
    render() {
        var image = '<svg xmlns="http://www.w3.org/2000/svg" version="1.2" baseProfile="tiny" width="47.4" height="40.65" viewBox="21 18.5 158 135.5"><path d="M25,50 l150,0 0,100 -150,0 z" stroke-width="4" stroke="black" fill="rgb(128,224,255)" fill-opacity="1" ></path><path d="M25,50 L175,150 M25,150 L175,50" stroke-width="4" stroke="black" fill="black" ></path><g transform="translate(0,0)" stroke-width="4" stroke="black" fill="none" ><circle cx="100" cy="30" r="7.5" fill="black" ></circle><circle cx="70" cy="30" r="7.5" fill="black" ></circle><circle cx="130" cy="30" r="7.5" fill="black" ></circle></g></svg>';
        return (
            <div dangerouslySetInnerHTML={{ __html: image }} />
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,使用一个叫做的属性dangerouslySetInnerHTML让我非常不安.是否有更普遍接受(和更安全)的方式来做到这一点?

javascript xss svg reactjs

10
推荐指数
6
解决办法
2050
查看次数

React 中确定 div 中文本的行数

我使用 Line-Clamp 属性(带有备份最大高度)来限制 React 组件中显示的行数。我希望之后有一个可选链接,可以将此内容扩展到其完整长度,但前提是当前行数大于行夹数。

行数是固定的 (3),所以我想我可以计算 div 的当前高度,然后将其与标准文本大小的 3 行的预期高度进行比较?

但是,如果有人决定在其中放入不同的非文本内容,它可能无法按预期工作。有没有特定的方法来获取容器中文本的行数?

 const {useState} = React;

const ClampedDiv = ({ children, showLinkProp }) => {
  const [open, setOpen] = useState(false);

  // This is where I'd do the line number calculation, but it's just
  // using a placeholder instead.
  let showLink = false;
  if (showLinkProp) {
    showLink = true;
  }
  
  let textClass = "text";
  if (open) {
    textClass += " open";
  }

  return <div className="container">
    <span class={textClass}>{children}</span>
    {showLink && !open && …
Run Code Online (Sandbox Code Playgroud)

html javascript css reactjs

9
推荐指数
1
解决办法
6700
查看次数

将HTML框定位在面向下方的三角形中

我收到了来自客户的不寻常的请求,那就是将他们提供的课程定位在朝下的三角形中.下图:

 X X X X
  X X X
   X X 
    X
Run Code Online (Sandbox Code Playgroud)

其中X是其中一个方框.我已经完成了一些行类和偏移(下面),但我现在认为可能有一种更简单的方法来做到这一点,因为它不是完全可访问的布局(所有像素值和偏移都是硬编码的).我正在寻找一些关于如何响应地定位盒子或者更容易实现我在下面所做的事情的洞察力.

.item {
  text-align: center;
  width: 260px;
  float: left;
  box-sizing: border-box;
  padding: 10px;
}

.item button {
  float: right;
}

.row {
  width: 100%;
  clear: both;
}

.offset {
  position: relative;
}

.offset-1 {
  left: 130px;
}

.offset-2 {
  left: 260px;
}

.offset-3 {
  left: 390px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="row">
  <div class="item">
    <h3>Title</h3>
    <img src="http://dummyimage.com/250x200/000/fff.png">
    <button>Some button</button>
  </div>
  <div class="item">
    <h3>Title</h3>
    <img src="http://dummyimage.com/250x200/000/fff.png">
    <button>Some button</button>
  </div>
  <div class="item">
    <h3>Title</h3>
    <img …
Run Code Online (Sandbox Code Playgroud)

html css css-position

7
推荐指数
1
解决办法
53
查看次数

通过 FTP 将课程上传到 Moodle

我有一个非常大.mbz的单门课程Moodle备份文件 - 略超过 1GB。我需要将此备份上传到服务器,但当然 Moodle 提供的文件管理器不允许我这样做,因为文件太大。

所以我想知道是否可以通过 FTP 将备份上传到某个文件夹,moodledata然后使用备份管理器来恢复课程,如果是这样,我应该在哪里上传它/备份存储在哪里?

ftp backup moodle

5
推荐指数
1
解决办法
3326
查看次数

在python opencv中查找骨架图像的交集

我有一个骨架图像(如下所示)。

骨架图像

我想得到线条的交点。我在下面尝试了以下方法,skeleton是一个 openCV 图像,算法返回一个坐标列表:

def getSkeletonIntersection(skeleton):
    image = skeleton.copy();
    image = image/255;
    intersections = list();
    for y in range(1,len(image)-1):
        for x in range(1,len(image[y])-1):
            if image[y][x] == 1:
                neighbourCount = 0;
                neighbours = neighbourCoords(x,y);
                for n in neighbours:
                    if (image[n[1]][n[0]] == 1):
                        neighbourCount += 1;
                if(neighbourCount > 2):
                    print(neighbourCount,x,y);
                    intersections.append((x,y));
    return intersections;
Run Code Online (Sandbox Code Playgroud)

它找到有两个以上相邻像素的白色像素的坐标。我认为这只会返回角落,但事实并非如此 - 它会返回更多点。

带有标记坐标的骨架

这是其检测到的点标记在图像上的输出。这是因为它检测到下面显示的一些不是相交的示例。

0 0 0    1 1 0    0 1 1
1 1 1    0 1 0    1 1 0
0 0 1    0 0 …
Run Code Online (Sandbox Code Playgroud)

python opencv image-processing line-intersection opencv-contour

4
推荐指数
1
解决办法
5250
查看次数

在Delphi中初始程序加载后更改一个TStatusPanel的颜色?

我有一个程序,底部有一个包含三个元素的状态栏.我想用不同的字体颜色重绘第二个元素,以表示用户有效.我的问题的第一部分是:

a)如何以不同的颜色将文本重绘为默认文本?

和b)如何在触发事件后以不同的颜色绘制文本(例如按下按钮)?

我目前的代码如下.我正在尝试检查以不同颜色重新绘制面板的条件是否正确(CurrentUser.Valid,这是一个布尔值),然后尝试重新着色文本.这目前不起作用.

procedure TChatFormMain.sbarMainDrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
var
  RectForText: TRect;
begin
  if (Panel = StatusBar.Panels[1]) and (CurrentUser.Valid) then
  begin
    sbarMain.Canvas.Font.Color := clGreen;
    RectForText := Rect;
    StatusBar.Canvas.FillRect(RectForText);
    DrawText(sbarMain.Canvas.Handle, PChar(Panel.Text), -1, RectForText,
      DT_SINGLELINE or DT_VCENTER or DT_LEFT);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

在代码的另一部分我打电话StatusBar.repaint;试图用新的文本颜色重绘条,这是正确的吗?

更新MCVE:

unit colourStatusU;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls;

type
  TForm1 = class(TForm)
    StatusBar1: TStatusBar;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel;
      const Rect: TRect); …
Run Code Online (Sandbox Code Playgroud)

delphi colors c++builder statusbar ondraw

3
推荐指数
1
解决办法
4815
查看次数

Object.entries() 时间复杂度

有谁知道Object.entries()Javascript的复杂性?基于这个问题,我猜想O(n)如果它是通过获取键和值作为数组然后将它们压缩在一起来实现的?

javascript arrays v8 time-complexity

2
推荐指数
1
解决办法
322
查看次数

将XML数据提取到php

我正在尝试从XML文件中提取数据(http://freegeoip.net/xml/google.com).您可以看到该文件的内容如下所示:

<Response>
<Ip>74.125.235.3</Ip>
<CountryCode>US</CountryCode>
<CountryName>United States</CountryName>
<RegionCode>CA</RegionCode>
<RegionName>California</RegionName>
<City>Mountain View</City>
<ZipCode>94043</ZipCode>
<Latitude>37.4192</Latitude>
<Longitude>-122.0574</Longitude>
<MetroCode>807</MetroCode>
<AreaCode>650</AreaCode>
</Response>
Run Code Online (Sandbox Code Playgroud)

我想获取存储在<latitude><longitude>标签中的信息,并将它们存储在单独的变量中.问题是,我不知道如何做到这一点,并想知道是否有人可以告诉我如何用PHP解析XML文件?

php xml latitude-longitude geoip

1
推荐指数
1
解决办法
3万
查看次数

循环访问Delphi Recordset中的参数

我有一个带有可变数据集的delphi数据源.这些数据集具有可变数量的参数.我希望能够将数据集中所有参数的值修改为设定值.我试图通过使用参数的.Items []属性迭代集合中的所有参数,如下所示:

 with (datamoduleSearch.datasourceSearch.DataSet as TADODataSet) do
  begin
    Close;
    i := 0;
    while assigned(Parameters.Items[i]) do
    begin
      Parameters.Items[i].Value := SearchText;
      inc(i);
    end;
    Open;
    Active := True;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

但是,由于我怀疑我没有正确使用指定的过程,因此失败了.有没有办法找到记录集中的参数数量,并按照我描述的方式迭代它?

mysql delphi parameters recordset

1
推荐指数
1
解决办法
138
查看次数

修改后将画布重置为上一张图片

假设我有一个简单的画布元素,并在其上绘制复杂的资源密集型图片。然后我在图片上画了一些简单的线条。有没有办法“保存”画布的状态(在绘制线条之前),然后重绘状态以擦除所做的任何进一步更改。我确实尝试过save()restore()但我认为它的状态不包括画布上的当前形状。请参阅下面的演示。

var canvas = document.getElementById("canvas");
var context = canvas.getContext('2d');

function init() {
  // This is some computationally intensive drawing we don't want to repeat
  context.fillStyle = "rgb(150,29,28)";
  context.fillRect(40, 40, 255, 200);
  context.fillStyle = "rgb(150,83,28)";
  context.fillRect(10, 10, 50, 50);
  context.fillStyle = "rgb(17,90,90)";
  context.fillRect(5, 100, 200, 120);
  context.fillStyle = "rgb(22,120,22)";
  context.fillRect(200, 200, 90, 90);
  // Now we save the state so we can return to it
  saveState();
}

function lines() {
  // This is some drawing we will …
Run Code Online (Sandbox Code Playgroud)

html javascript drawing canvas

1
推荐指数
1
解决办法
1607
查看次数

在单元内调用单元

我试图在帕斯卡的一个单位内召唤一个单位.这可能吗?

我有一个单位RailFence和另一个单位fileHandlingRailfence

在fileHandlingRailfence中,我想使RailFence程序和函数可用,而无需复制和粘贴整个函数.但是,将其添加到我的Uses列表时出现错误.

uses
  SysUtils;
  railFence in 'RailFence.pas';
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

[DCC Error] FileHandlingRailfence.pas(15): E2029 Declaration expected but identifier 'RailFence' found
[DCC Fatal Error] Proj_RailFence.dpr(7): F2063 Could not compile used unit 'FileHandlingRailfence.pas'
Run Code Online (Sandbox Code Playgroud)

关于这是否可能的任何想法?

delphi pascal

0
推荐指数
1
解决办法
249
查看次数

在点击和计时器上在Delphi DrawGrid中着色单个单元格

我正在尝试创建一个生命游戏模拟器.我之前使用StrGrid工作但是速度较慢而且我被告知要使用DrawGrid.

我的程序通过两个数组工作,strArray包含下一代单元格的所有值,而currentArray包含当前一代单元格的所有值(两者都是数组[1 ... 127]的类型数组[1 ... 127].字符串;,我知道使用布尔数组会更好,但这是一个较旧的程序).在计时器上,算法计算每个单元周围的活细胞数,并在strArray,T(指定活细胞)或F(指定死细胞)中给出一个值.然后将该模式写入currentArray,以便在下次需要计算活细胞时使用.然后,如果相关单元格与currentArray中的"F"匹配,我想将每个单元格的颜色更改为白色,如果匹配"T",则将其更改为黑色.我还希望能够为单击黑色的单元格着色,并将数据表中的值更改为"T".

但是,我对drawgrids不熟悉,似乎无法找到任何对我有意义的相关信息.当我使用字符串网格时,您可以使用stringgrid.cells [stringgrid.col,stringgrid.row]访问每个单元格的内容:='whatever'; 但是我找不到类似DrawGrid的方法.

总结一下,我需要帮助:

  • 在timer.onTick过程中更改drawgrid中单元格的颜色.
  • 单击它时,在绘图网格中查找单元格的颜色.

我希望你能帮助我.谢谢!

arrays delphi onclick draw conways-game-of-life

0
推荐指数
1
解决办法
3228
查看次数

在运行时设置Delphi按钮的OnClick过程

我有一个程序,我需要在其中更新数据库表,并在编辑框中输入信息,最后用一个按钮进行更新.但是,表单是在运行时创建的,包括按钮在内的所有元素也以相同的方式创建.我想办法允许数据库参数定义更新数据库的过程,例如:

procedure UpdateDatabase(Field1,Field2,Field3:string);
begin
//update database here...
end;
Run Code Online (Sandbox Code Playgroud)

然后将我的按钮的OnClick事件分配给此过程,其参数预填充如下:

Button1.OnClick := UpdateDatabase(Edit1.text,Edit2.Text,Edit3.Text);
Run Code Online (Sandbox Code Playgroud)

但是,类型不兼容,因为它需要不同的数据类型.我还注意到参数通常不能传递给OnClick函数.实际上有没有办法实现我提出的建议?

这是我当前的创建按钮代码:

function buttonCreate(onClickEvent: TProcedure; 
  left: integer; top: integer; width: integer; height: integer; 
  anchors: TAnchors; caption: string; parent: TWinControl; form: TForm;): TButton;
var
  theButton: TButton;
begin
  theButton := TButton.Create(form);
  theButton.width := width;
  theButton.height := height;
  theButton.left := left;
  theButton.top := top;
  theButton.parent := parent;
  theButton.anchors := anchors;
  //theButton.OnClick := onClickEvent;
  theButton.Caption := caption;
  result := theButton;
end;
Run Code Online (Sandbox Code Playgroud)

任何和所有帮助表示赞赏!

delphi runtime onclick button

0
推荐指数
1
解决办法
8598
查看次数